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 ...
随机推荐
- linux命令-sudo普通用户拥有root权限
普通用户权限不够 [root@wangshaojun ~]# su - dennywang[dennywang@wangshaojun ~]$ ls /root/ls: 无法打开目录/root/: 权 ...
- LookupError: unknown encoding: cp65001解决办法
一.之前手上做的一个web项目,漏洞频发,服务器用的是菜鸟云服务器,那个应急响应中心不错,想不到乌云倒了,白帽子竟然被阿里系养了,题外话了,首先感谢白帽子提的漏洞,同时也感慨自己安全知识,以及意识的薄 ...
- Jsonp实现跨域请求Ajax
客户端 #!/usr/bin/env python import tornado.ioloop import tornado.web class MainHandler(tornado.web.Req ...
- 1-1+zookeeper简介
zookeeper是中间件,可以为分布式系统提供协调服务.如果没有分布式系统,zookeeper也发挥不了它的优势.
- [Elasticsearch2.x] 多字段搜索 (一) - 多个及单个查询字符串 <译>
多字段搜索(Multifield Search) 本文翻译自官方指南的Multifield Search一章. 查询很少是只拥有一个match查询子句的查询.我们经常需要对一个或者多个字段使用相同或者 ...
- php判断终端是手机还是电脑访问网站代码
?php function check_wap() { if (isset($_SERVER['HTTP_VIA'])) return true; if (isset($_SERVER['HTTP_X ...
- 生产者与消费者-1:1-基于list
一个生产者/一个消费者: /** * 生产者 */ public class P { private MyStack stack; public P(MyStack stack) { this.sta ...
- linux 内核移植和根文件系统的制作
1.1 Linux内核基础知识 在动手进行Linux内核移植之前,非常有必要对Linux内核进行一定的了解,下面从Linux内核的版本和分类说起. 1.1.1 Linux版本 Linux内核的版本号 ...
- GCD 学习(四) dispatch_group
如果想在dispatch_queue中所有的任务执行完成后在做某种操作,在串行队列中,可以把该操作放到最后一个任务执行完成后继续,但是在并行队列中怎么做呢.这就有dispatch_group 成组操作 ...
- python3-while与if
# Auther: Aaron Fan age_of_oldboy = 56 #定义一个while循环的起始判断值countcount = 0#当count小于3的情况下一直执行while循环whil ...