刚学mybatis,看以前的ibatis的模糊查询是:
<select id="findByName" parameterClass="String" resultClass="Student">
select * from Student where sname like '%$sname$%'
</select>
现在想改成用mybatis的:
改成这样:select * from Student where sname like '%${sname}%'
和select * from Student where sname like '%#{sname}%',都不行
有谁用mybatis,告诉下,thank you......
我最近也遇到了这个问题,研究了一下现在是这样实现的:
<select id="findByName" parameterType="String" resultType="Student">
select * from Student where sname like CONCAT('%',#{sname},'%')
</select>######
mybatis 跟 iBatis 都没有区别哦,只是改了个名字而已
######不要'%%',直接#{sname}
######说了是模糊查询呀,就是查找: %sname% %表示0个或多个其它字符。#{sname} 不能用;
例如查表学生中有‘李’字的所有所生: select sname,sid from student where sname like '%李%'
iBatis 时是:select sname,sid from student where sname like '%$sname$%';
myBatis时,再这么写就报错:
楼上那么写,只能查找固定姓名的学生。
######说了是模糊查询呀,就是查找: %sname% %表示0个或多个其它字符。#{sname} 不能用;
例如查表学生中有‘李’字的所有所生: select sname,sid from student where sname like '%李%'
iBatis 时是:select sname,sid from student where sname like '%$sname$%';
myBatis时,再这么写就报错:
楼上那么写,只能查找固定姓名的学生。
你可以在传入数据的时候增加%,例如传入的是oschina,变成 %oschina% 传给 MyBatis :)
当然,这是我不懂 MyBatis 的说法,MyBatis 应该还是支持这种模糊查询的
######太扯了 MyBatis 的 UserGuide 文档中居然没有提及这个问题。
######这样写:
<select id="findByName" parameterType="String" resultType="Student">
select * from Student where sname like #{sname}
</select>
运行时:List<Student> stus=ssi.findByName("%xi%");
System.out.println(stus.size());
这样能查出来。
mybatis把以前的#id#变成#{id}了;$csd$就不知道变成什么了,
总觉查东西时传个 %xi% 很不爽,
######写法:<like>#{sname}</like>
请看这里:http://code.google.com/p/mybatis/issues/detail?id=85
######用户文档就写了一丁点,丫根就没提。,
######<select id="findByName" parameterType="String" resultType="Student">
select * from Student where sname like #{sname}
</select>
List<Student> stus=ssi.findByName("x");
System.out.println(stus.size());
查询得0,改成其它都会报错,没有<like>标记吧
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。