当我使用Mybatis时,DAO接口(interface)指定传递的参数称为“param”,它是一个POJO,里面有两个属性。现在我需要根据这两个属性的存在来进行不同的查询。我不知道该怎么办。
我知道应该使用动态SQL,但是我只能判断POJO是否存在,而不能判断它的属性是否存在,否则MyBatis会提示我找不到这个属性。
/这是DAO接口(interface),指定参数名称。/ public List findByPage(@Param("param")T o,Page page);
/这是它对应的Mapper文件,只能判断一个属性是否存在,不能判断另一个属性是否存在。/
从 ps_jzg j,ps_bm b 中选择 * j.BM_DM = b.DM AND j.BM_DM = #{param.bmDm}
现在,这个名为“param”的参数有两个属性:bmDm 和 processid。我需要判断这两个参数是否存在,然后进行不同的查询。现在我只能判断POJO“param”是否存在。我无法更改DAO接口(interface),因为它是上层规定的。这个问题困扰了我很长时间。我真的需要你的帮助。谢谢。
最佳答案
你的T
是通用参数吗?如果没有,请在您的 xml 文件中尝试此操作。
<select id="findByPage" parameterType="com.xx.xx.xx.T">
select * from ps_jzg j,ps_bm b
where j.BM_DM = b.DM
<if test = 'bmDm != null'>
AND j.BM_DM = #{bmDm}
</if>
<if test = 'processid != null'>
and j.processid = #{processid}
</if>
</select>
同时,从界面中删除 @Param
注释。
关于java - MyBatis传递多个参数时,如何判断参数属性是否存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56642051/