问题描述:

使用mybatis-plus进行开发过程中,单表得增删改查等都可以利用封装好的方法,而一些场景设计多表联合查询,且需要自定义字段的,就需要进行自定义sql

使用方法:

1、service中使用自定义的方法。

// IPage<Ship> pageData = shipMapper.selectPage(page, queryWrapper);IPage<Ship> pageData= shipMapper.mypagelist(page,queryWrapper);

上面注释的是我们使用内置的分页方法,下面mypagelist则为我们自己的自定义,因为要涉及到多表联查。

2、mapper代码示范

 IPage<Ship> mypagelist(Page<Ship> page, @Param("ew") Wrapper<Ship> queryWrapper);

这里要使用内置的Wrapper来进行参数约束,所以必须加Param("ew"),或者你自己直接将queryWrapper命名为ew也可以。

3、xml

 <result property="ShipOwner" column="ship_owner_name"/></resultMap><resultMap id="ship_1" type="com.pcitc.lng.ops.purchase.model.Ship" extends="shipMap"><association property="tankerTypeDto" javaType="com.pcitc.lng.ops.purchase.dto.TankerTypeDto"><result property="fullName" column="ship_type_name"/></association></resultMap><select id="mypagelist" resultMap="ship_1">SELECT a.id,a.code,a.full_name,b.full_name ship_type_name,c.full_name ship_owner_name FROM lng_b_ship AS aLEFT JOIN lng_b_tanker_type  AS b ON a.ship_type_id=b.idLEFT JOIN lng_b_shipowner AS c ON a.shipowner_id=c.id${ew.customSqlSegment}</select>

这里我需要关联查询的表字段有shipowner和tankerType,可以都按照

<result property="ShipOwner" column="ship_owner_name"/>这个模式写,或者也可以都按照
<association 这样写,看你实体类的定义和需求来自定义增加字段

注意:${ew}后面跟customSqlSegment会自己拼接where  ${ew} SqlSgment则不会自己拼接

如果多表关联查询的字段有重复,比如A表的id数据库列名是id,B表的也是id,则需要注意wrapper这里用加上你查询sql语句的别名,我这里是别名 a,所以

queryWrapper.eq("a.id", shipDto.getId());

而不能再采取

queryWrapper.lambda().eq(Ship::getId, shipDto.getId())这样的写法,否则会报错,提示你无法确定ID是那一列。

还有另外一种则是将sql语句通过注解的形式写在mapper接口方法上

 @Select("select * from 表名 " +"${ew.customSqlSegment}")IPage<OpsPurchaseInt> mypagelist(Page<OpsPurchaseInt> page, @Param("ew") Wrapper<OpsPurchaseInt> queryWrapper);

关于Mybatis-plus多表联查自定义sql分页查询相关推荐

  1. Spring JPA自定义SQL分页查询

    JPA自定义SQL分页查询 [存在的问题] 在使用Spring JPA原生SQL进行分页查询时存在如下问题: 1.使用List转Page工具类导致查询速度较慢,原因在于先把所有数据查询出来返回成Lis ...

  2. 使用mybatis-plus时,自定义SQL分页查询

  3. SQL 分页查询语句大全即(查找第N到M条记录的方法)

    SQL 分页查询语句大全即(查找第N到M条记录的方法) 第一种方法,我的原创方法 row=2 表示分页行数 page=1 表示页码 getnum=row*page select * from  (se ...

  4. SQL分页查询方案的性能对比

    作者 | 中国农业银行 吴海存 责编 | 晋兆雨 头图 | CSDN下载自视觉中国 导读 本文主要介绍了基于ROWNUM.主键列/非空唯一性列.分析函数.OFFSET-FETCH NEXT机制的几种S ...

  5. SQL分页查询的介绍以及好处~~

    SQL分页查询的介绍以及好处~~ 分页查询 就是将过多的结果在有限的界面上分多页来显示,一般将分页查询分为两类: 逻辑分页.物理分页. 逻辑分页是在用户第一次访问时,将数据库的所有记录全部查询出来,添 ...

  6. Sql分页查询以及top函数简单实例

    Sql分页查询以及top函数简单实例 Sql分页查询以及top函数简单实例 我们做项目时查询表格存在几百上千条数据时经常会需要用到分页,下面就给大家介绍一下在sql中查询分页的简单实例吧.首先我们要知 ...

  7. 记一次SpringDateJpa 使用原生sql 分页查询

    jpa 如果使用原生sql如何分页查询呢? @GetMapping("/getInfo")public Result getOpenId() throws Exception{Si ...

  8. jpi多表联查_使用mybatis进行多表联查

    一.使用mybatis的基本步骤 1.导入jar包 2.配置文件 3.使用配置文件完成操作 二.实战演习 需求:教师表里有教师id和教师姓名 学生表里有学生id,姓名,年龄,教师id 一个教师有多个学 ...

  9. 使用mybatis进行四表联查

    文章目录 一.问题背景 二.实际问题 三.问题解决 四.sql语句与XML映射文件 五.测试 一.问题背景 先数据库有用户表user.角色表role.菜单表menu.功能表funs和角色菜单关系表ro ...

最新文章

  1. android-sdk-windows版本号下载
  2. C#里partial关键字的作用
  3. 设计模式理解:装饰模式Decorator
  4. url,href,src区别
  5. 图形交互界面_室内量房APP哪家强?5款软件深度测评(界面UI体验篇)
  6. 4.从Paxos到Zookeeper分布式一致性原理与实践--- Zookeeper 与 Paxos
  7. 假日活动的背后,酷开网络再造OTT营销的“价值高地”
  8. oracle卸载和服务问题
  9. 专利写作-如何填写技术交底书
  10. 丢花娟(约瑟夫环问题)
  11. 高仿网易评论列表效果之数据准备
  12. Kafka的Topic删不掉
  13. word中安装Zotero插件
  14. 联想拯救者电脑高清壁纸
  15. CURA汉化 语言修改 本地化 locale
  16. 复杂网络分析 03 ER网络学习笔记
  17. 带着老娘和女儿看《孔子》
  18. 串口——同时打开两个串口
  19. JavaWeb-smbms项目
  20. SuperData上线VR数据平台,做行业发展的“指明灯”

热门文章

  1. HTML 5高级程序设计
  2. 刘佳启 个人项目 新猜数字游戏
  3. 已经发车的票还能取出来吗_过了开车时间以后还能再取出火车票吗?
  4. Android SDK怎么救砖,z怎样用android sdk救砖
  5. Win10笔记本电脑盖上屏幕怎么设置不息屏?
  6. python 获取当前日期和时间,Python中获取当前日期和时间的方法详解
  7. 什么样的回答才足够个性?吾来个性化回复举手参评
  8. Qt LineEdit 光标文本位置+设置图标问题
  9. 霞浦天气预报软件测试,霞浦天气预报15天
  10. 封装(encapsulation)继承(extend)多态(Polymorphism)this,super、类与类之间的关系