mybatis模糊查询

二胖二胖 发布于 2017/08/28 18:17
阅读 165
收藏 0

报错:org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'name' in 'class java.lang.String'。多张表模糊查询代码如下:

<select id="selectAllBedLike" parameterType="String" resultMap="BedResultMap">
  select b.number,pat.id,per.name,per.age,pese.id,gro.groupname from bedtable b left join patient pat on b.pat_id = pat.id left join personalinformation per on pat.per_id = per.id left join personalservice pese on pat.id = pese.pat_id left join grouptable gro on pese.gro_id = gro.id left join apartment apa on b.apa_id = apa.id left join apartmenttype apty on apa.apty_id = apty.id where per.name like '%${name}%';
</select>
加载中
0
蓝水晶飞机
蓝水晶飞机

这样写才是正确的:

<select id="selectAllBedLike" parameterType="String" resultMap="BedResultMap">

  <bind name="nameLike" value="'%' + name + '%'"/>

  select b.number,pat.id,per.name,per.age,pese.id,gro.groupname from bedtable b left join patient pat on b.pat_id = pat.id left join personalinformation per on pat.per_id = per.id left join personalservice pese on pat.id = pese.pat_id left join grouptable gro on pese.gro_id = gro.id left join apartment apa on b.apa_id = apa.id left join apartmenttype apty on apa.apty_id = apty.id
where per.name like #{nameLike};
</select>

 

蒲池幸子
蒲池幸子
这个答案才是最标准而且是mybatis推荐的。要善用bind标记,还有要注意#{}和${}的区别。这个答案才应该被推荐,不推荐用数据库特有的CONCAT。
二胖二胖
二胖二胖
试了,还是报一样的错
0
skhuhu
skhuhu

可以这样写····不是报没getter方法吗·····

二胖二胖
二胖二胖
写了get方法的
0
公孙二狗
公孙二狗
MySql:
SELECT * FROM user WHERE name like CONCAT('%',#{name},'%')

Oracle:
SELECT * FROM user WHERE name like CONCAT('%',#{name},'%') 或 
SELECT * FROM user WHERE name like '%'||#{name}||'%'

SQLServer:  
SELECT * FROM user WHERE name like '%'+#{name}+'%'

DB2:
SELECT * FROM user WHERE name like CONCAT('%',#{name},'%') 或  
SELECT * FROM user WHERE name like '%'||#{name}||'%'

 

二胖二胖
二胖二胖
谢谢,问题解决了很有用
0
蓝水晶飞机
蓝水晶飞机

我想说一句,他的问题在于误用了${variable}!而为什么 公孙二狗的答案能解决他的问题,因为避免了楼主的那种错误。而我前面回答的,我的写法已经实践过非常之多,不清楚楼主有没有注意到 $和#的区别呢。

二胖二胖
二胖二胖
恩,我用你的代码又写了几个语句试了也可以。谢谢了
返回顶部
顶部