mybatis-plus在Mapper类中使用@select标签进行多表联合动态条件查询

1.单表动态条件查询
1)单字段作为参数
直接用@param设置的值作为注入就好了

    @Select("select * from ppms_person_message where create_time = #{testValue}")
    void test(@Param("testValue") String testValue);

2)对象作为参数
注意:在@param内的值不为“ew”的时候会提示找不到条件参数

@Select("select * from ppms_person_message ${ew.customSqlSegment}")
    Page<PersonMessage> selectTestPage(@Param("page") Page<PersonMessage> page, @Param("ew") QueryWrapper<PersonMessage> qw);

2.多表联合动态条件查询
1>使用wrapper
注意:1)${ew.customSqlSegment}仅为where下的条件
2)join on后面的条件需要使用另外的param

    @Select("select m.* from ppms_person_message m " +
            "left join ppms_notice n on n.id = m.notice_id and n.create_time = #{testValue}" +
            "${ew.customSqlSegment}")
    void test(@Param("testValue") String testValue, @Param("ew") QueryWrapper<PersonMessage> qw);

2>使用标签
注意:1)动态条件外双引号改为单引号,内单引号改为转义双引号(")
2)使用遍历条件时需要在最外成加上标签

@Select("")
    List<MessageRespVo> selectUnReadNumByUserId2(@Param("dto") TaskPageDto dto);

你可能感兴趣的:(mybatis,mybatis,java,mysql)