嘿,我使用了mp的自连接+分页查询之后,再使用条件查询居然失效了。

原因:我想通过自连接查询将一个表的两条数据放在一起,为此我重写了mp的分页查询

 IPage<Indi> selectIndiShow(IPage<Indi> page, @Param(Constants.WRAPPER) QueryWrapper<Indi> wrapper);

我又在xml中这样写mapper

复制代码
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.example.mapper.IndiMapper">
    <resultMap id="mainIndi" type="com.example.entity.Indi">
        <result property="lastMain  Indi" column="a.indi_true/a.indi"/>
        <result property="lastSubIndi" column="b.indi_true/b.indi"/>
        <result property="name" column="name"/>
        <result property="time" column="time"/>
        <result property="id" column="id"/>
    </resultMap>
    <select id="selectIndiShow" resultMap="mainIndi">
        SELECT a.id,a.name,a.time,a.indi_true/a.indi,b.indi_true/b.indi,a.ichange
        FROM indiinfor a ,indiinfor b
        WHERE a.mainOrsub=1 AND  b.mainOrsub=0 AND  a.name=b.name
    </select>
</mapper>
复制代码

一开始一切都好,后来我想添加一个模糊查询,天呐,wrapper居然不生效。我怎么调试都可以看到他的输入是多么的完美无瑕,逻辑紧密。可是!在控制台报的sql居然没有和queryWrapper任何相关的信息。可是明明

我使用sout都可以把他打印出来

复制代码
    public IPage<Indi> selectSelf(Params params) {
        IPage<Indi> page = new Page<>(params.getPageNum(), params.getPageSize());
        QueryWrapper<Indi> queryWrapper = new QueryWrapper<>();
        if(!StringUtils.isBlank(params.getName())){
            queryWrapper.like("a.name",params.getName());
        }

        return indiMapper.selectIndiShow(page, queryWrapper);
    }
复制代码

最后我将上面所有信息抛给chat询问,他告诉我,我重写的mapper里面没有使用querywrapper条件。在重写的xml中,我应该使用mp的ew(entity wrapper)来引用我的qw

ew是MyBatis Plus自动生成的一个参数,用于传递QueryWrapper中的条件信息

复制代码
<select id="selectIndiShow" resultMap="mainIndi">
    SELECT a.id, a.name, a.time, a.indi_true/a.indi, b.indi_true/b.indi, a.ichange
    FROM indiinfor a, indiinfor b
    WHERE a.mainOrsub=1 AND b.mainOrsub=0 AND a.name=b.name
    <if test="ew != null">
        <if test="ew.sqlSegment != null and ew.sqlSegment != ''">
            AND ${ew.sqlSegment}
        </if>
    </if>
</select>
复制代码
posted @   天启A  阅读(48)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示