原因:我想通过自连接查询将一个表的两条数据放在一起,为此我重写了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>标签:queryWrapper,name,查询,params,mp,使用,indi,indiinfor From: https://www.cnblogs.com/kun1790051360/p/17926989.html