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

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

时间:2023-12-25 21:11:06浏览次数:24  
标签:queryWrapper name 查询 params mp 使用 indi indiinfor

原因:我想通过自连接查询将一个表的两条数据放在一起,为此我重写了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

相关文章

  • 达梦数据对比工具的部署与使用
    1、拷贝达梦软件bin目录到Oracle服务器(root用户)压缩Linuxrh6x86版本的达梦数据库bin目录,例如压缩文件为dmbin.tar.gz,将文件拷贝到Oracle服务器指定目录并解压(如:/home/oracle/dmbin),给目录/home/oracle/dmbin授予相关权限和用户组chown-Roracle:oinstall/home/oracle/dmbin2、配......
  • Halcon 机械视觉 使用仿射变换 机械手实现孔位定位
    要推算机械手平面坐标系A与相机平面坐标系B的关系,我们可以首先找到两个平面坐标系之间的平移量和旋转量。平移量:选择一个公共的参考点,比如某个标志物,假设在坐标系A中的坐标为(Ax,Ay),在坐标系B中的坐标为(Bx,By)。那么平移量可以表示为:Δx=Bx-AxΔy=By-Ay这里的(Δx,Δy)......
  • 数据库 Mysql 多表查询,left join联合两个sql示例
    SELECTt1.RowID,t1.UserID,t1.CreateDate,t1.BatchState,t2.InputDataCount,t1.QtyFROM(SELECT@curRow:=@curRow+1ASRowID,`UserID`,DATE_FORMAT(CreateDate,'%Y-%m-%d')ASCreateDate,......
  • GPT-1论文《Improving Language Understanding by Generative Pre-Training》解读
    背景GPT-1采用了两阶段训练的方式:1. 第一阶段pre-training,在海量文本上训练,无需label,根据前k-1个词预测第k个单词是什么,第一阶段的训练让模型拥有了很多的先验知识,模型具有非常强的泛化性2.第二阶段在特定任务上fine-tuning,让模型能适应不同的任务,提高模型在特定任务上的准......
  • windows使用rclone挂载alist为本地磁盘,设置开机自启
    前言实现在windows下将alist挂载为本地磁盘,并设置开机自启,使得重启后依然生效。教程下载软件Rclone:RclonedownloadsWinFsp:https://winfsp.dev/rel/配置Rclone假设Rclone所在目录是:D:\rclone-v1.64.0-windows-amd64,进入文件目录,在地址栏输入cmd输入rcloneconfig......
  • C++ filesystem 库使用
    一、filesystem介绍filesystem源自boost.filesystem库,在C++17合并进C++标准库中,filesystem中的所有操作是线程不安全的。二、路径相关操作在filesystem库中提供path类来对路径进行操作,后续的相关操作,如打开文件、遍历目录、判断文件类型等,都是需要用path作为参数来指定操作具......
  • 如何使用ps抠图(两种扣图方法)
    PS抠图的方法有很多种,以下是其中两种常用的方法:方法一:适用于背景颜色单一、较为简单的图片。选中魔棒工具/魔术橡皮擦,点击背景,出现选区,点击Delete键删除。点击快速选择工具,沿着所需图形的边缘点击。该工具会自动识别图形的边缘并形成选区。方法二:适用于背景颜色复杂、需要精......
  • Java Junit 单元测试使用示范(带截图)
    依赖包junit-4.7.jar@Test注解packagejunit;importorg.junit.Test;/***选中add,右键运行add()*/publicclassDemo1{@Testpublicvoidadd(){inta=10;intb=13;intsum=a+b;System.out.println(sum);}......
  • JMeter对数据库的查询操作步骤详解
    提示:关于JMeter如何连接MySQL数据库,前面文章已经详解的讲解过了。因为配置数据库连接是比较固定的步骤,这里就不重复讲解了。本篇文章主要详细说明,使用JDBCRequest组件,如何对数据库进行查询的各种操作。JMeter中查询语句的操作步骤:添加测试计划。添加线程组,设置线程组的次数。添加J......
  • Python 如何在测试中使用 Mock
    Mock概念mock的意思是模拟,也就是模拟接口返回的信息,用已有的信息替换它需要返回的信息,从实现对所依赖的模块的测试。一般有两种场景:前端对后端接口的mock,后端服务之间的测试中涉及的mock,常常发生在单元测试的时候。前端mock可以通过一些工具来完成:使用抓包工具Fiddler,Charles来......