同时支持不同数据库
不同的数据库可能语法差异比较大,如何同时支持?
针对不同数据库执行不同的SQL
QueryChain,UpdateChain,DeleteChain,InsertChain 均支持
java
SysUser sysUser = QueryChain.of(sysUserMapper)
.select(SysUser::getId)
// dbAdapt((query, selector) 可以多次
.dbAdapt((query, selector) -> {
selector.when(DbType.H2, () -> {
//H2 拼接 id = 3
query.eq(SysUser::getId, 3);
}).when(DbType.MYSQL, () -> {
//MYSQL 拼接 id = 3
query.eq(SysUser::getId, 2);
}).otherwise(() -> {
//其他 拼接 id = 3
query.eq(SysUser::getId, 1);
});
})
.get();
或 (大差异情况下使用)
java
SysUser sysUser = sysUserMapper.dbAdapt(selector -> {
selector.when(DbType.H2, () -> {
return sysUserMapper.getById(1);
}).when(DbType.MYSQL, () -> {
return sysUserMapper.getById(2);
}).otherwise(() -> {
return sysUserMapper.getById(3);
});
});