MyBatis兼容

最后更新:2024-01-05 10:49:20 | 状态:已完成

大部分现有项目都具备MyBatis基础(大量的SQL),经常收到反馈需要解析MyBatais的SQL

实际上并没有太大意义,原来已经通过MyBatis实现的功能没有必要换另一种方式袖。原有的SQL能在多处能重用的更是微乎其微。

并且这里说的兼容并不是完全兼容,只是解析其中的主体部分也就是SELECT FROM 部分。

如果mapper.xml不在项目的classpath目录中(如在其他jar中)则需要指定目录位置(通过ConfigTable.SQL_STORE_DIR)

为什么不解析其中的查询条件?
查询条件中各种if else forEach太啰嗦,也不容易记,也正是因为这才需要AnyLine生动生成。参考condition()与约定格式

为什么不解析其中的order by group by ?

解析SQL并不是AnyLine擅长的,实在是力不足以完成。特别是遇到子查询时。
order by 混在其中解析不出来会影响分页与总数计算,所以有order by 的需要放在Java中或单独定义



所以大部分情况并不推荐重用原来的SQL,AnyLine可以自动生成。

只有一些复杂查询可以重用其主体部分,查询条件部分也尽量是由AnyLine自动生成。

最近更新 搜索 提交