Mybatis-plus多表关联查询,多表分页查询
学习plus真的觉得写代码真的越来越舒服了。昨天开始接触吧,只要学会了多表关联查询。plus就能随意搭配使用了。
关于怎么搭建的就自行了去研究了哦。这里直接进入主题。
我用的是springboot+mybatis-plus。新项目我打算以后都是这样了。
配置一个分页插件!
import org.mybatis.spring.annotation.MapperScan; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; import org.springframework.transaction.annotation.EnableTransactionManagement; import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; import com.baomidou.mybatisplus.extension.plugins.PerformanceInterceptor; @EnableTransactionManagement @Configuration @MapperScan("com.szpdc.Dao")//输入你的dao层的包 public class MybatisPlusConfig { /** * 分页插件 */ @Bean public PaginationInterceptor paginationInterceptor() { return new PaginationInterceptor(); } /** * SQL执行效率插件 */ @Bean // @Profile({ "dev", "test" }) // 设置 dev test 环境开启 public PerformanceInterceptor performanceInterceptor() { return new PerformanceInterceptor(); } }
Controller
@RequestMapping("syscal") public Object syscal() { Page<Map<String, Object>> page=userService.selectListPage(1, 2); return page.getRecords(); }
Service
import java.util.Map; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; public interface UserService { Page<Map<String,Object>> selectListPage(int current, int number); }
ServiceImpl
import java.util.List; import java.util.Map; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; /** * * @Author By Yirs * @Date 2018-12-01 21:18:06 * @Description mybatis-plus 在服务层继承了ServiceImpl 就有了 UserMapper的 就少了以前的@Autowired 注入dao层 */ @Service public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService { @Override public Page<Map<String,Object>> selectListPage(int current, int number) { // 新建分页 Page<Map<String,Object>> page = new Page<Map<String,Object>>(current, number); // 返回分页结果 1为id return page.setRecords(this.baseMapper.dyGetUserList(page,1)); } }
Dao
import java.util.List; import java.util.Map; import org.apache.ibatis.annotations.Select; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; /** * *@Author By Yirs *@Date 2018-12-01 22:27:13 */ public interface UserMapper extends BaseMapper<User> { /** * 为了区别plus原来的查询select*的字段 ,自定义为dy * @param 分页查询 * @return 多表关联查询 */ @Select("SELECT a.id,a.`name`,a.age,b.`describe` FROM USER a LEFT JOIN userinfo b ON a.id = b.user_id where a.id=#{id}") List<Map<String, Object>> dyGetUserList(Page<Map<String,Object>> page,Integer id); }
结果
Sql语句
需要就拿去当测试。
DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) CHARACTER SET utf8 DEFAULT NULL, `age` int(11) DEFAULT NULL, `email` varchar(255) CHARACTER SET utf8 DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of user -- ---------------------------- INSERT INTO `user` VALUES ('1', '谢谢', '18', '32as1d564@qq.com'); INSERT INTO `user` VALUES ('2', '行政村v', '22', '3234564@qq.com'); INSERT INTO `user` VALUES ('3', '查询啊', '60', '35asd564@qq.com'); INSERT INTO `user` VALUES ('4', '才表报错', '30', '32弟媳妇64@qq.com'); INSERT INTO `user` VALUES ('5', 'asdasd', '22', 'sdfsad'); INSERT INTO `user` VALUES ('6', 'dsfds', '32', 'sdafsdf'); INSERT INTO `user` VALUES ('7', 'sdfxczv', '33', 'xcvbvchrwt'); INSERT INTO `user` VALUES ('8', 'dfsalkcxjv', '99', 'jklsdhcfvlkjsda'); INSERT INTO `user` VALUES ('9', 'jskdchvc,m', '34', 'dvclkjh'); -- ------------------------------ ------------------------------ ---------------------------- DROP TABLE IF EXISTS `userinfo`; CREATE TABLE `userinfo` ( `id` int(11) NOT NULL, `user_id` int(11) DEFAULT NULL, `describe` varchar(255) CHARACTER SET utf8 DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of userinfo -- ---------------------------- INSERT INTO `userinfo` VALUES ('1', '1', '用户1');
只要mybatis基础够好这个很好理解的
Mybatis-plus多表关联查询,多表分页查询的更多相关文章
- yii2 ActiveRecord多表关联以及多表关联搜索的实现
作者:白狼 出处:http://www.manks.top/yii2_many_ar_relation_search.html 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明 ...
- Oracle SQL性能优化 - 根据大表关联更新小表
需求: 小表数据量20w条左右,大表数据量在4kw条左右,需要根据大表筛选出150w条左右的数据并关联更新小表中5k左右的数据. 性能问题: 对筛选条件中涉及的字段加index后,如下常规的updat ...
- oracle多表关联删除数据表记录方法
oracle多表关联删除的两种方法 第一种使用exists方法 delete from tableA where exits ( select 1 from tableB Where tableA.i ...
- MyBatis的使用增删改查(两种分页查询)
文件目录 写一下每个文件的代码 UserDao.java package cn.zys.dao; import java.io.IOException; import java.util.List; ...
- JPA分页查询与条件分页查询
情有独钟的JPA 平时在写一些小项目时,比较喜欢引用 Spring Data Jpa,其实还是图他写代码快~在日常的开发工作中,分页列表查询基本是随处可见,下面一起看一下如何使用 jpa 进行多条件查 ...
- MySQL的分页查询及Oracle分页查询
MySQL: Select ... from ...where ...order by...limit start,pageNum 例:比如从 取 个数据 , String sql = )*pageR ...
- Oracle 数据库分页查询与排序分页查询
一.分页查询 原始查询语句 SELECT * FROM NASLE_WFSHH 修改为分页查询语句,加上 ROWNUM 列.此处为查询第 1 页,每页 9 条数据 SELECT * FROM ( SE ...
- DQL分组查询和DQL分页查询
分组查询: 1.语法:group by 分组字段: 2.注意: 分组之后查询的字符按:分组字段.聚合函数 where 和having 的区别 where再分组前进行限定,如果不满足条件则不参与分组.h ...
- THINKPHP_(3)_TP6中实现多层关联,第一个表关联第二个表查询出的数据,再关联第三个表
问题: (1)canxunDanwei数据表对应的模型中有一个关联是: public function canxunDanwei() { return $this->belongsTo('\ap ...
- spring data jpa 表关联设置用户表关联角色表配置
User 表: @ManyToMany(cascade = { CascadeType.MERGE }) @JsonIgnore @JoinTable(name = "UserRole&qu ...
随机推荐
- VS2008 C++ 项目怎样添加“依赖”、“库目录”和“包含目录”
随笔 - 79, 文章 - 0, 评论 - 7, 引用 - 0 1. 添加编译所需要(依赖)的 lib 文件 [解决方案资源管理器]“项目->属性->配置属性->连接器->输入 ...
- easyui中 combogrid控件的loadData方法加载本地数据
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- js中substring和substr用法与区别
String.substring( ):用于返回一个字符串的子串 用法如下:string.substring(from, to) 其中from指代要抽去的子串第一个字符在原字符串中的位置 to指代所要 ...
- .net 4 安装未成功,无意中的解决办法!
公司 电脑是chost的系统,由于使用时间过长,重装纯净版系统的话,代价太大,故网上寻求各种解决办法! 安装.net 4 总是失败,查看百度,各种: WIN7系统哈哈跟我的问题一样,我的刚才解决了:1 ...
- Linux系统的安装(centos的下载地址:http://mirror.symnds.com/distributions/CentOS-vault/6.3/isos/i386/,选择:CentOS-6.3-i386-bin-DVD1.iso 这个下载并进行安装)
1.首先打开虚拟机: 在上面的那个按钮旁有一个下拉的符号,点开后会看到一个进入固件的按钮,直接点击进去. 便会进入这个界面: 在这个界面其实我们不需要该任何的东西,但是我们需要进入boot界面看一眼, ...
- js实现导航栏的吸顶操作
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...
- maven手动安装oracle驱动到仓库
1. 2.打开http://maven.jahia.org/maven2/一步步打开找到 我需要的版本 https://devtools.jahia.com/nexus/content/groups/ ...
- C++面向对象类的实例题目九
题目描述: 编写一个学生和老师数据输入和显示程序,学生数据有编号.姓名.班号和成绩,教师数据有编号.姓名.职称和部门. 要求将编号.姓名.输入和显示设计成一个类person,并作为学生数据操作类stu ...
- Python 网络爬虫 008 (编程) 通过ID索引号遍历目标网页里链接的所有网页
通过 ID索引号 遍历目标网页里链接的所有网页 使用的系统:Windows 10 64位 Python 语言版本:Python 2.7.10 V 使用的编程 Python 的集成开发环境:PyChar ...
- 数据结构_stack
问题描述 一天,小 L 发现了一台支持一下操作的机器:IN x:将整数 x 入栈POP:将栈顶元素出栈ASUB:出栈两个数,将两数差的绝对值入栈COPY:将栈顶元素(如果有的话)复制一份,入栈现在小 ...