关于mybatis like
2016-07-08 11:48
225 查看
在mybatis 中like常见的写法为
<if test="param.name != null and param.name !=''">
and NAME LIKE CONCAT( #{param.name ,jdbcType=VARCHAR}, '%')
</if>
或者
<if test="param.name != null and param.name !=''">
and NAME LIKE #{param.name ,jdbcType=VARCHAR}||'%'
</if>
最终翻译成的sql为 :
and NAME LIKE CONCAT( ?, '%')或者and NAME LIKE ?||'%'
但这样的写法在oracle10g中,如果该sql含有order by 那么它不会走索引
所以推荐的写法是:
<if test="param.name != null and param.name!=''">
<bind name="sys_bind_tag_name" value="''+_parameter.getParam().getName()+ '%'" />
and NAME LIKE #{sys_bind_tag_name,jdbcType=VARCHAR}
</if>
悲剧的是。那么它会提示某个bean没有提供name的get方法.如果你把#改成$则正常..
下载mybatis 源代码。发现报错的地方
![](http://img.blog.csdn.net/20160708115037127?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
也就是说。它是从bean里面找这个属性。而不是从boundsql的addtionalParameter里面找
原来我的mybatis分页插件中。有这样一句
![](http://img.blog.csdn.net/20160708115058737?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
好吧。。这种写法。等于清空了bondsql的addtionalParameter,改成如下
![](http://img.blog.csdn.net/20160708115118050?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
问题解决!
<if test="param.name != null and param.name !=''">
and NAME LIKE CONCAT( #{param.name ,jdbcType=VARCHAR}, '%')
</if>
或者
<if test="param.name != null and param.name !=''">
and NAME LIKE #{param.name ,jdbcType=VARCHAR}||'%'
</if>
最终翻译成的sql为 :
and NAME LIKE CONCAT( ?, '%')或者and NAME LIKE ?||'%'
但这样的写法在oracle10g中,如果该sql含有order by 那么它不会走索引
所以推荐的写法是:
<if test="param.name != null and param.name!=''">
<bind name="sys_bind_tag_name" value="''+_parameter.getParam().getName()+ '%'" />
and NAME LIKE #{sys_bind_tag_name,jdbcType=VARCHAR}
</if>
悲剧的是。那么它会提示某个bean没有提供name的get方法.如果你把#改成$则正常..
下载mybatis 源代码。发现报错的地方
也就是说。它是从bean里面找这个属性。而不是从boundsql的addtionalParameter里面找
原来我的mybatis分页插件中。有这样一句
好吧。。这种写法。等于清空了bondsql的addtionalParameter,改成如下
问题解决!
相关文章推荐
- Mybatis传递多个参数的解决办法(三种)
- 获取Java的MyBatis框架项目中的SqlSession的方法
- Mybatis逆工程jar包的修改和打包
- 深入浅析mybatis oracle BLOB类型字段保存与读取
- MyBatis MapperProvider MessageFormat拼接批量SQL语句执行报错的原因分析及解决办法
- MyBatis启动时控制台无限输出日志的原因及解决办法
- 详解Java的MyBatis框架和Spring框架的整合运用
- Java的MyBatis框架项目搭建与hellow world示例
- SpringMVC整合mybatis实例代码
- Java实现mybatis批量插入数据到Oracle
- oracle+mybatis 使用动态Sql当插入字段不确定的情况下实现批量insert
- MyBatis学习笔记(二)之关联关系
- 浅析Mybatis 在CS程序中的应用
- Java Mybatis框架入门基础教程
- Windows下Java+MyBatis框架+MySQL的开发环境搭建教程
- Mybatis与Ibatis的区别
- Mybatis控制台打印Sql语句的实现代码
- Mybatis传递多个参数进行SQL查询的用法
- MyBatis学习教程(二)―如何使用MyBatis对users表执行CRUD操作
- Java+MyBatis+MySQL开发环境搭建流程详解