mybatisplus实现一次多表联查+分页查询
众所周知,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>
mybatis-plus:
mapper-locations: classpath:/mapper/*Mapper.xml
mybatisplus实现一次多表联查+分页查询的更多相关文章
- .net通用CMS快速开发框架——问题1:Dapper通用的多表联合分页查询怎么破?
最近在弄一个东东,类似那种CMS的后台管理系统,方便作为其它项目的初始化框架用的. 现在遇到个问题,如标题所示:Dapper通用的多表联合分页查询怎么破? 难道只能通过拼接sql或者使用存储过程吗?我 ...
- MyBatis-Plus 多表联查+分页
在写东西的过程中,多表联查和分页功能必不可少.当然,crud也很重要 但是又不想写代码和xml. 通过苦苦的查找.发现MyBatis-Plus一款国产的框架.优化了许多操作 本次主要记录一下,多表联查 ...
- mybatis-plus注解版实现多表联查(sql)
mybatis注解版实现多表联查 需求: 用户有角色,角色有权限,需要一次取用户信息包含角色信息及其对应权限 实体类: package cn.zytao.taosir.common.model.use ...
- Mybatis中多表联查,查询出来的字段出现重名,造成数据异常的解决方法!
在做一对多出现的问题,引发的思考:当数据库表中,主表的主键id和明细表的中的字段名相同时怎么办?Mybatis进行自动映射赋值的时候会不会出现异常? 注意:M ...
- day20 关联查询与多表联查 & 子查询与union联合查询 & 数据库定义语言DDL
day20 关联查询 #左连接:表名 left join 表名 以左表为主表,只显示与左表能匹配的行 SELECT s.*,q.* FROM student AS s LEFT JOIN queue_ ...
- Mybatis-Plus 多表联查分页
原文:https://www.jianshu.com/p/759b6430ed5b 分析 使用的工程,依旧是 spring-boot,关于分页,官网给出了一个单表的 demo,其实多表分页实现原理相同 ...
- sqlserver多表联查分页
select * from(select H_order.Id ,H_order.userID, ROW_NUMBER() over (order by H_order.Id Desc) as row ...
- 分享自研实现的多数据源(支持同DB不同表、跨DB表、内存数据、外部系统数据等)分页查询工具类实现原理及使用
思考: 提起分页查询,想必任何一个开发人员(不论是新手还是老手)都能快速编码实现,实现原理再简单不过,无非就是写一条SELECT查询的SQL语句,ORDER BY分页排序的字段, 再结合limit ( ...
- 使用KeleyiSQLHelper类进行分页查询
本文适用于sql server单主键表或者视图进行分页查询,支持多字段排序. KeleyiSQLHelper类的最新代码请到http://hovertree.com/down/下载整个解决方案源代码查 ...
- 在mybatis中,在列表分页查询过程中造成集合属性数据丢失的问题
由于在进行多表关联分页查询时,某一个集合属性的多条数据正好位于2页的分割处,那么就会造成在前一页获取到的该集合属性的集合内部数据不全,因为其余数据被分到了第二页, 因此建议在进行集合属性的封装时,最好 ...
随机推荐
- 使用node压缩js
先下载并安装Node 安装完成后打开cmd运行:node -v 运行:npm -v 确定node安装成功,然后安装uglifyjs,打开cmd输入下面命令: npm install uglify-js ...
- ch58x/ch59xADC差分采样NTC电阻获取当前温度
前言:之前的文章中也有关于使用I2C器件进行温度的采集的文章 采集温度的方式不止使用传感器,也可以使用NTC温敏电阻进行采集,此方法的外围电路较为简单切成本较低,代码也较为容易实现. 实现原理:先通过 ...
- NOIP模拟90(多校23)
T1 回文 解题思路 原来 \(n^3\) 可以过 500 ... 先枚举一下路径长度,对于同一路径长度点数最多是 \(n\) 个,我们可以接着枚举从 \((n,m)\) 出发的路径长度相同的点. 然 ...
- 异构数据源同步之数据同步 → DataX 使用细节
开心一刻 中午我妈微信给我消息 妈:儿子啊,妈电话欠费了,能帮妈充个话费吗 我:妈,我知道了,我帮你充 当我帮我妈把话费充好,正准备回微信的时候,我妈微信给我发消息了 妈:等会儿子,不用充了,刚刚有个 ...
- .NET C# 程序自动更新组件
引言 本来博主想偷懒使用AutoUpdater.NET组件,但由于博主项目有些特殊性和它的功能过于多,于是博主自己实现一个轻量级独立自动更新组件,可稍作修改集成到大家自己项目中,比如:WPF/Winf ...
- 认识mongodb
Mongodb是一个介于关系数据库和非关系数据库之间的产品(Nosql),是非关系数据库当中功能最丰富,最像关系数据库的,语法有点类似javascript面向对象的查询语言,它是一个面向集合的,模式自 ...
- 命运2 Cross Save
epic 上免费领的命运2,进不去,界面提示要扫码. 解决方法: 1.手机或电脑浏览器进入:https://www.bungie.net/. 2.使用epic 账号登录 ,然后设置一个邮箱,邮箱收到验 ...
- vue判断开始日期不能大于截至日期
method下的方法: checkTime() { var start = new Date(this.form.startDate).getTime() var end = new Date(thi ...
- springmvc组件说明
DispatcherServlet:前端控制器,也称为中央控制器,它是整个请求响应的控制中心,组件的调用由它统一调度. HandlerMapping:处理器映射器,它根据用户访问的 URL 映射到对应 ...
- 为什么说 Mybatis 是半自动 ORM 映射工具?它与全自动的区别在哪里?
Hibernate 属于全自动 ORM 映射工具,使用 Hibernate 查询关联对象或者关联集合对象时,可以根据对象关系模型直接获取,所以它是全自动的.而 Mybatis 在查询关联对象或关联集合 ...