4
回答
mybatis模糊查询
滴滴云服务器,限时包月0.9元,为开发者而生>>>   

报错: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>
<无标签>
举报
温柔的美男子
发帖于5个月前 4回/115阅

这样写才是正确的:

<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>

 

--- 共有 2 条评论 ---
spyv23这个答案才是最标准而且是mybatis推荐的。要善用bind标记,还有要注意#{}和${}的区别。这个答案才应该被推荐,不推荐用数据库特有的CONCAT。 5个月前 回复
温柔的美男子试了,还是报一样的错 5个月前 回复
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}||'%'

 

--- 共有 1 条评论 ---
温柔的美男子谢谢,问题解决了很有用 5个月前 回复

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

--- 共有 1 条评论 ---
温柔的美男子恩,我用你的代码又写了几个语句试了也可以。谢谢了 5个月前 回复
顶部