2023-11-20
|
ZH
因为不同数据库的配置不一致,以及设计人为风格的不一致,所以表名列名的大小写很容易混淆,对于不区分大小写的数据库没有问题,但是区分大小写的数据库一定要保持代码与原数据库一致。 在读取元数据时一般会返回一个LinkedHashMap,因为在读取元数据的过程中有可能需要多个过程才能读出完整数据,使用map
2023-11-23
|
ZH
* DriverAdapter主要用来构造和执行不同数据库的命令,一般会分成3步,以insert为例 * 1.insert[调用入口]提供为上一步调用的方法,方法内部再调用[build]生成具体命令,最后调用[execute]执行命令 * 2.insert[命令构造]根据不同的数据库生成具体的ins
2023-11-27
|
ZH
// 1直接获取元数据 //sql server 列元数据中不返回表名,所以查不到注释 LinkedHashMap<String,Column> columns = service.metadata("SELECT ID AS USER_ID, ID AS ID, CODE AS US
2023-11-30
|
ZH
这三部分的执行流程,基本上已固定,顶级父类统一实现。主要区别DDL命令合成、metadata命令合成、metadata结果集封装三个子流程。其中metadata的差异最大。 比较乐观的是大部分数据库可以归类到pg,mysql,oracle等几个系列,所在大部分方法在父类中已经实现了,只有极个别不
2023-12-01
|
ZH
关于切换数据源常用的方式是通过ThreadLocal干预DynamicDataSource返回值来实现。 理论是上可以的 但在JDK8实际应用中发现ThreadLocal并不可靠,特别是在线程池或线程共享环境中会导致数据源错乱。 大家经常百度的 为什么数据源切换失败,如果是偶尔失败&nbs
2023-12-01
|
ZH
调用DefaultEnvironmentWorker.start();或spring.AutoConfiguration注册DataSourceLoadListener和不同的DataSourceLoader到上下文中 DataSourceLoadListener.load()