赞
踩
这是个人根据公司达梦适配改造经验封装的一个starter
基于Druid里提供的AST工具和Filter实现。在数据库连接层拦截, 上层无感知, 可以用mybatis、jpa甚至jdbcTemplate都可以拦截到。
Druid提供的AST开发简单、灵活、并且性能达到生产级别。
说明
- MySQL用`包裹关键字,而达梦中用的是"
- MySQL和达梦关键字集并不一样,遇到的时候加上`即可
- 目前支持
- 数据库名、表名和列名
- 表别名和列别名
- 属性名, 形如 tab1.col1、schema1.tab1, col1、tab1即属性名
说明
仅支持一个参数的情况, 例如GROUP_CONCAT(col1, col2)是不支持的, 但是可以修改sql改成GROUP_CONCAT(CONCAT(col1, ‘_’, col2))
** 说明
达梦IF中类型校验严格, 需要转换写法
说明
达梦不支持前者
说明
达梦不支持前者
说明
达梦不支持前者
说明
达梦不支持前者
说明
达梦不支持前者
说明
达梦不支持前者
说明
达梦类型校验严格, 并且不支持boolean类型
说明
需要在数据库中添加函数
CREATE FUNCTION FUNC_OP_MY_DIVIDE( C1 IN NUMBER,
C2 IN NUMBER )
RETURN NUMBER AS
BEGIN
RETURN
CASE
WHEN C1 is null then
null
when C2 is null or C2 = 0 then
null
else
C1/C2
END;
END;
/
说明
DDL
说明
说明
说明
说明
expr若是非数字或字符串等特殊表达式, 将会得到错误的形式
说明
说明
例如 col1 is false、col1 is not 0
说明
代码中去掉,由数据库自动转换
说明
不支持的写法
where case when t>0 then a>0 else b>0 end
if(case when t>0 then a>0 else b>0 end,1,0)
select case when t>0 then a>0 else b>0 end
换写法
例如
where case when t>0 then a>0 else b>0 end
可以改成where case when t>0 then a else b end >0
或者改成where ((t>0 and a>0) or b>0)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。