1、SQL中的表名前非必要不携带库名或模式名。
原因:线上库名或模式名与开发环境可能不一致,不能因为数据库名的变更就得改SQL。
2、SQL的返回值非必要不用map接收,统一用具体业务对象的resultmap接收。
原因:数据库字段的大小写在不同的数据库中因敏感性不同,会导致map对象中的key大小写不同,可能出现空指针异常情况发生;不同的数据库值的返回数据类型可能不同,比如有的返回整型有的返回浮点型,对value做类型转换可能出现异常。
3、子查询临时表必须添加别名。
4、不使用数据库关键字做表名或者字段名。
5、使用的function与参数之间不能出现空格。
举例:国产达梦数据库出现空格也能正常执行,到MySQL就不行。
6、SQL语句中一定不要使用全角字符,切记,否则折腾死人也可能找不到SQL错在哪里。
举例:全角空格后边的SQL不识别,但不影响SQL执行,用肉眼无法识别,且日志打印出来的SQL复制出来能正常运行。软件空格的Unicode编码为\u3000。
7、树表的递归查询,不同数据库有不同的执行过程,建议添加冗余字段保存结构完整路径,便于提高查询效率。
举例:MySQL版本8.0以上可以使用
with recursive 来实现,
Oracle可以使用start with 开始条件 connect by prior 子查询条件
JAVAweb项目SQL兼容注意事项
最新推荐文章于 2025-12-05 20:44:21 发布

1090

被折叠的 条评论
为什么被折叠?



