java - MyBatis传递多个参数时,如何判断参数属性是否存在?

标签 java spring mybatis ibatis ssm

当我使用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/

相关文章:

java.security.SignatureException : Signature does not match 异常

java - 如何在不暴露我的 oauth secret token 的情况下在开源中使用 Twitter4J?

Java转Jython——获取自身内部的类对象

java - MyBatis 有序集

java - 插入数据库

java - 使用 SQL Server 和 MyBatis 的批处理 "insert if missing"

java - 随机#猜谜游戏无限循环

java - Spring boot Http Security 配置单元测试

java - 过期后自动删除数据库行

java - 使用xml向quartz调度器添加参数