众所周知,mybatisplus非常好用,但是他不好用就不好用在不可以多表联查。在mybatisplusjoin中提供了联查的方法,那个参数我没看懂Orz

不过,历经千辛万苦,我通过xml终于写出来了mybatisplus也可以简单实现的多表联查!

我这里是以书籍整理为例,书籍是一个单独的表,书籍类别是另一个表,通过书籍通过类别的ID可以查询到书籍类别的具体名称,下面分享一下代码:

//mapper,可以看到我这里的查询和分页查询写的方式大差不差

IPage<BookInfo> selectBookPage(IPage<BookInfo> page, @Param(Constants.WRAPPER) QueryWrapper<BookInfo> wrapper);
//service

public IPage<BookInfo> getOne(Params params){
IPage<BookInfo> pages = new Page<>(params.getPageNum(), params.getPageSize());
QueryWrapper<BookInfo> queryWrapper = new QueryWrapper<>();
if (!StringUtils.isBlank(params.getName())) {
queryWrapper.like("book.name", "%" + params.getName() + "%");
                //这里的列名不添加上去可能会有冲突,我两个表里都有name字段
}
if (!StringUtils.isBlank(params.getAuthor())) {
queryWrapper.like("author", "%" +params.getAge()+ "%");
}
return bookMapper.selectBookPage(pages,queryWrapper);
}
//bookMapper.xml

<?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.BookMapper">
<resultMap id="orderMap" type="com.example.entity.vo.BookInfo">
<result property="id" column="id"/>
<result property="name" column="name"/>
<result property="price" column="price"/>
<result property="author" column="author"/>
<result property="press" column="press"/>
<result property="img" column="img"/>
<result property="typeId" column="typeId"/>
<result property="typeName" column="typeName"/>
</resultMap>
<select id="selectBookPage" resultMap="orderMap">
select book.*,type.name as typeName
from book left join type on book.typeId =type.id
${ew.customSqlSegment}
</select>
</mapper>
  //记得修改yml文件

mybatis-plus:
mapper-locations: classpath:/mapper/*Mapper.xml

mybatisplus实现一次多表联查+分页查询的更多相关文章

  1. .net通用CMS快速开发框架——问题1:Dapper通用的多表联合分页查询怎么破?

    最近在弄一个东东,类似那种CMS的后台管理系统,方便作为其它项目的初始化框架用的. 现在遇到个问题,如标题所示:Dapper通用的多表联合分页查询怎么破? 难道只能通过拼接sql或者使用存储过程吗?我 ...

  2. MyBatis-Plus 多表联查+分页

    在写东西的过程中,多表联查和分页功能必不可少.当然,crud也很重要 但是又不想写代码和xml. 通过苦苦的查找.发现MyBatis-Plus一款国产的框架.优化了许多操作 本次主要记录一下,多表联查 ...

  3. mybatis-plus注解版实现多表联查(sql)

    mybatis注解版实现多表联查 需求: 用户有角色,角色有权限,需要一次取用户信息包含角色信息及其对应权限 实体类: package cn.zytao.taosir.common.model.use ...

  4. Mybatis中多表联查,查询出来的字段出现重名,造成数据异常的解决方法!

    在做一对多出现的问题,引发的思考:当数据库表中,主表的主键id和明细表的中的字段名相同时怎么办?Mybatis进行自动映射赋值的时候会不会出现异常?                      注意:M ...

  5. day20 关联查询与多表联查 & 子查询与union联合查询 & 数据库定义语言DDL

    day20 关联查询 #左连接:表名 left join 表名 以左表为主表,只显示与左表能匹配的行 SELECT s.*,q.* FROM student AS s LEFT JOIN queue_ ...

  6. Mybatis-Plus 多表联查分页

    原文:https://www.jianshu.com/p/759b6430ed5b 分析 使用的工程,依旧是 spring-boot,关于分页,官网给出了一个单表的 demo,其实多表分页实现原理相同 ...

  7. sqlserver多表联查分页

    select * from(select H_order.Id ,H_order.userID, ROW_NUMBER() over (order by H_order.Id Desc) as row ...

  8. 分享自研实现的多数据源(支持同DB不同表、跨DB表、内存数据、外部系统数据等)分页查询工具类实现原理及使用

    思考: 提起分页查询,想必任何一个开发人员(不论是新手还是老手)都能快速编码实现,实现原理再简单不过,无非就是写一条SELECT查询的SQL语句,ORDER BY分页排序的字段, 再结合limit ( ...

  9. 使用KeleyiSQLHelper类进行分页查询

    本文适用于sql server单主键表或者视图进行分页查询,支持多字段排序. KeleyiSQLHelper类的最新代码请到http://hovertree.com/down/下载整个解决方案源代码查 ...

  10. 在mybatis中,在列表分页查询过程中造成集合属性数据丢失的问题

    由于在进行多表关联分页查询时,某一个集合属性的多条数据正好位于2页的分割处,那么就会造成在前一页获取到的该集合属性的集合内部数据不全,因为其余数据被分到了第二页, 因此建议在进行集合属性的封装时,最好 ...

随机推荐

  1. Wpf Bitmap(Image)Base64,Url,文件Path,Stream转BitmapSource(ImageSource),无需外部dll

    直接上代码 using System; using System.Drawing; using System.IO; using System.Windows.Forms; using System. ...

  2. conda错误 创建新环境conda create -n TF117 python=3.5时报错 An unexpected error has occurred. Conda has prepared the above report.

    创建新环境conda create -n TF117 python=3.5时报错 An unexpected error has occurred. Conda has prepared the ab ...

  3. 使用rem、动态vh自适应移动端

    前言 这是我的 模仿抖音 系列文章的第六篇 第一篇:200行代码实现类似Swiper.js的轮播组件 第二篇:实现抖音 "视频无限滑动"效果 第三篇:Vue 路由使用介绍以及添加转 ...

  4. 安装图形化界面时候报错 Transaction check error: file /boot/efi/EFI/centos from install of fwupdate-efi-12-5.el7.centos.x86_64 conflicts with file from package grub2-common-1:2.02-0.65.el7.centos.2.noarch

    报错 Transaction check error:file /boot/efi/EFI/centos from install of fwupdate-efi-12-5.el7.centos.x8 ...

  5. 使用 OpenTelemetry 构建可观测性 06 - 生态系统

    过去的五篇文章讨论了如何使用 OpenTelemetry 来构建可观测性的技术细节.我认为在本博文系列的结尾介绍有关 OTel 生态系统的信息,为读者提供更全面的了解非常重要.OpenTelemetr ...

  6. 30 岁的程序员,要有 "归零" 心态

    大家好,我是码农先森. 古话说的 "三十而立",正是担重之时,却大部分人在职场中都处于不上不下的尴尬境地.已经没有刚毕业时那股子冲劲,被生活和工作磨平了棱角. 在技术思想方面,似乎 ...

  7. iterrows()

    iterrows() 是 Pandas 库中 DataFrame 对象的一个方法,它允许你迭代 DataFrame 的行.当你有一个 DataFrame 并且想要逐行访问数据(或者基于每一行的数据做一 ...

  8. MacOSX 运行Unity卡顿 [gethostname]

    用MacbookPro 32G i7 独显 的高配打开项目发现异常卡顿, Win平台没有问题 打开Unity的Profiler DeepProfiler. 发现完全是卡在 dns.gethostnam ...

  9. 关于java-Class类的简单分析

    java有个Class的基类,高级编程的时候,务必要理解这个. 粗略看下,可以明白了解Class这个类对于了解和掌握java非常重要. Class这个类的包路径是:java.lang.Class< ...

  10. /etc/shadow文件破解,密码破解,md5,SHA256,SHA512破解

    环境 Kali系统 John the Ripper密码破解者 shadow文件解析 文件的格式为: {用户名}:{加密后的口令密码}:{口令最后修改时间距原点(1970-1-1)的天数}:{口令最小修 ...