Mybatis如何改写带标签的SQL
最近想动态改变mybatis执行的SQL,看了一些博客好像都是说的自定义拦截器实现Interceptor,然后获取
metaObject.getValue("delegate.boundSql.sql")
这样的。但是我看这里的sql语句已经是把
<if>、<where>
这些标签给替换过后的拿去数据库执行的SQL了。那么应该如何把自己重新写的带标签的语句重写进去呢?
最近想动态改变mybatis执行的SQL,看了一些博客好像都是说的自定义拦截器实现Interceptor,然后获取
metaObject.getValue("delegate.boundSql.sql")
这样的。但是我看这里的sql语句已经是把
<if>、<where>
这些标签给替换过后的拿去数据库执行的SQL了。那么应该如何把自己重新写的带标签的语句重写进去呢?
绝大部分的改写sql,都是在原有sql上变更,所以插件就行了,而你的需求是不通过xml,自己定义便签内的sql片段,插件那就不合适了,而mybatis 3引入注解以后,提供了SelectProvider,可以自己定义类和方法,运行时通过反射动态决定具体的sql片段,