每天玩转3分钟 MyBatis-Plus - 1. 配置环境

每天玩转3分钟 MyBatis-Plus - 2. 普通查询

代码下载:https://github.com/Jackson0714/study-mybatis-plus.git

mybatis-plus的查询功能非常强大, 这一篇,我们来看下mybatis-plus的普通查询功能。后续文章再介绍高级查询功能。

一、创建User表

User 表结构如下:

id name age email
1 Jone 18 test1@baomidou.com
2 Jack 20 test2@baomidou.com
3 Tom 28 test3@baomidou.com
4 Sandy 21 test4@baomidou.com
5 Billie 24 test5@baomidou.com

其对应的数据库 Schema 脚本如下:

  1. DROP TABLE IF EXISTS user;
  2. CREATE TABLE user
  3. (
  4. id BIGINT(20) NOT NULL COMMENT '主键ID',
  5. name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
  6. age INT(11) NULL DEFAULT NULL COMMENT '年龄',
  7. email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',
  8. PRIMARY KEY (id)
  9. );

其对应的数据库 Data 脚本如下:

  1. DELETE FROM user;
  2. INSERT INTO user (id, name, age, email) VALUES
  3. (1, 'Jone', 18, 'test1@baomidou.com'),
  4. (2, 'Jack', 20, 'test2@baomidou.com'),
  5. (3, 'Tom', 28, 'test3@baomidou.com'),
  6. (4, 'Sandy', 21, 'test4@baomidou.com'),
  7. (5, 'Billie', 24, 'test5@baomidou.com');

二、创建基础类

2.1 User 类

  1. package com.example.demo.entity;
  2.  
  3. import lombok.Data;
  4.  
  5. @Data
  6. public class User {
  7. private Long id;
  8. private String name;
  9. private Integer age;
  10. private String email;
  11. }

2.2 创建UserMapper接口,继承 MyBatis Plus BaseMapper接口

  1. package com.example.demo.mapper;
  2.  
  3. import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  4. import com.example.demo.entity.User;
  5.  
  6. public interface UserMapper extends BaseMapper<User> {
  7. }  

三、查询方法

3.1 单表查询所有记录 selectList

  1. /*
  2. * 描述:单表查询所有记录
  3. * 作者:博客园-悟空聊架构
  4. * 时间:2019-01-16
  5. * Github:https://github.com/Jackson0714/study-mybatis-plus.git
  6. * 博客园:https://www.cnblogs.com/jackson0714
  7. * */
  8. @Test
  9. public void testSelect() {
  10. System.out.println(("----- 单表查询所有记录------"));
  11. List<User> userList = userMapper.selectList(null);
  12. Assert.assertEquals(6, userList.size()); //表里面的记录总条数是否等于6,如果等于6,则测试通过
  13. userList.forEach(System.out::println);
  14. }
  1. userMapper.selectList(null);
  2. 对应的SQL语句是:
  3. SELECT id,name,age,email FROM user

如果找不到这些日志,可以点击如下按钮找到:

数据库有6条记录

查询出总条数6条,测试通过

3.2 单表根据主键id查询单条记录 selectById

  1. /*
  2. * 描述:单表根据主键id查询单条记录
  3. * 作者:博客园-悟空聊架构
  4. * 时间:2019-01-16
  5. * Github:https://github.com/Jackson0714/study-mybatis-plus.git
  6. * 博客园:https://www.cnblogs.com/jackson0714
  7. * */
  8. @Test
  9. public void testSelectById() {
  10. System.out.println(("----- 单表根据主键id查询单条记录 ------"));
  11. User user = userMapper.selectById(2);
  12. System.out.println(user);
  13. }
  1. 1 userMapper.selectById(2)
  2. 2 对应的SQL语句为
  3. 3 SELECT id,name,age,email FROM user WHERE id=?

数据库中有一条记录

3.3 单表根据 id list 批量查询 selectBatchIds

  1. /*
  2. * 描述:单表根据 id list 批量查询
  3. * 作者:博客园-悟空聊架构
  4. * 时间:2019-01-16
  5. * Github:https://github.com/Jackson0714/study-mybatis-plus.git
  6. * 博客园:https://www.cnblogs.com/jackson0714
  7. * */
  8. @Test
  9. public void testSelectByIds() {
  10. System.out.println(("----- 单表根据 id list 批量查询 ------"));
  11. List<Long> idsList = Arrays.asList(2L,4L,6L);
  12. List<User> userList= userMapper.selectBatchIds(idsList);
  13. userList.forEach(System.out::println);
  14. }

  1. userMapper.selectBatchIds(idsList);
  2. 对应的SQL语句为
  3. SELECT id,name,age,email FROM user WHERE id IN ( ? , ? , ? )

查询结果,id=2,id=4 的查询出来了,没有 id=6 的记录

3.4 单表根据条件查询 selectByMap

  1. /*
  2. * 描述:单表根据条件查询
  3. * 作者:博客园-悟空聊架构
  4. * 时间:2019-01-19
  5. * Github:https://github.com/Jackson0714/study-mybatis-plus.git
  6. * 博客园:https://www.cnblogs.com/jackson0714
  7. * */
  8. @Test
  9. public void testSelectByMap() {
  10. System.out.println(("----- 单表根据条件查询 ------"));
  11. Map<String, Object> conditions = new HashMap<>();
  12. conditions.put("name", "Jack");
  13. conditions.put("age", 20);
  14. List<User> userList= userMapper.selectByMap(conditions);
  15. userList.forEach(System.out::println);
  16. }
  1. userMapper.selectByMap(conditions);
  2. 对应的SQL语句为
  3. SELECT id,name,age,email FROM user WHERE name = ? AND age = ?

数据库有一条记录,name="Jack",age=20

注意:使用slectByMap时,条件里面的字段名需要和数据库保持一致。

不然会出现以下错误:

每天玩转3分钟 MyBatis-Plus - 1. 配置环境

每天玩转3分钟 MyBatis-Plus - 2. 普通查询

关注公众号:悟空聊架构,回复pmp,领取pmp资料!回复悟空,领取架构师资料!

作  者:悟空聊架构 
出  处:http://www.cnblogs.com/jackson0714/ 
关于作者:专注于移动开发。如有问题或建议,请多多赐教! 
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。 
特此声明:所有评论和私信都会在第一时间回复。也欢迎园子的大大们指正错误,共同进步。或者直接私信我 
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是作者坚持原创和持续写作的最大动力!

悟空聊架构 

关注我,带你每天进步一点点!

还有111本书籍赠送~~

每天玩转3分钟 MyBatis-Plus - 2. 普通查询的更多相关文章

  1. 每天玩转3分钟 MyBatis-Plus - 1. 配置环境

    每天玩转3分钟 MyBatis-Plus - 1. 配置环境 每天玩转3分钟 MyBatis-Plus - 2. 普通查询 MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 ...

  2. 每天玩转3分钟 MyBatis-Plus - 4. 高级查询(二)(条件构造器)

    每天玩转3分钟 MyBatis-Plus - 1. 配置环境 每天玩转3分钟 MyBatis-Plus - 2. 普通查询 每天玩转3分钟 MyBatis-Plus - 3. 高级查询(一) 每天玩转 ...

  3. 每天玩转3分钟 MyBatis-Plus - 3. 高级查询(一)(条件构造器)

    每天玩转3分钟 MyBatis-Plus - 1. 配置环境 每天玩转3分钟 MyBatis-Plus - 2. 普通查询 每天玩转3分钟 MyBatis-Plus - 3. 高级查询 代码下载:ht ...

  4. 每天玩转3分钟 MyBatis-Plus - 5. 高级查询(三)(条件构造器)

    每天玩转3分钟 MyBatis-Plus - 1. 配置环境 每天玩转3分钟 MyBatis-Plus - 2. 普通查询 每天玩转3分钟 MyBatis-Plus - 3. 高级查询(一) 每天玩转 ...

  5. 每天玩转3分钟 MyBatis-Plus - 6. select 用法

    每天玩转3分钟 MyBatis-Plus - 1. 配置环境 每天玩转3分钟 MyBatis-Plus - 2. 普通查询 每天玩转3分钟 MyBatis-Plus - 3. 高级查询(一) 每天玩转 ...

  6. MyBatis实现关联表查询

    一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关 ...

  7. MyBatis——实现关联表查询

    原文:http://www.cnblogs.com/xdp-gacl/p/4264440.html 一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 创 ...

  8. MyBatis学习总结_13_Mybatis查询之resultMap和resultType区别

    MyBatis的每一个查询映射的返回类型都是ResultMap,只是当我们提供的返回类型属性是resultType的时候,MyBatis对自动的给我们把对应的值赋给resultType所指定对象的属性 ...

  9. MyBatis 多表联合查询,字段重复的解决方法

    MyBatis 多表联合查询,两张表中字段重复时,在配置文件中,sql语句联合查询时使用字段别名,resultMap中对应的column属性使用相应的别名: <resultMap type=&q ...

随机推荐

  1. python基础十五之递归函数

    递归函数,在函数中调用自身函数,就会形成一个递归函数.例如: def recursion(n): n += 1 print(n) recursion(n) 由于递归函数的结构,在函数调用时,它会一直调 ...

  2. Python--day37--守护进程和几个常用的方法

    1,p.daemon = True #设置子进程为守护进程 #守护进程会随着主进程的代码执行完毕 而结束 #子进程 --> 守护进程 import time from multiprocessi ...

  3. linux readv 和 writev

    Unix 系统已经长时间支持名为 readv 和 writev 的 2 个系统调用. 这些 read 和 write 的"矢量"版本使用一个结构数组, 每个包含一个缓存的指针和一个 ...

  4. 实体Bean

    持久化实体管理EntityManager EntityManager 在Java persistence规范中,EntityManager是为所有持久化操作提供服务的中枢.Persistence co ...

  5. Linux 内核中的数据类型

    在我们进入更高级主题之前, 我们需要停下来快速关注一下可移植性问题. 现代版本的 Linux 内核是 高度可移植的, 它正运行在很多不同体系上. 由于 Linux 内核的多平台特性, 打算做认真使用的 ...

  6. 2016湖南省赛 I Tree Intersection(线段树合并,树链剖分)

    2016湖南省赛 I Tree Intersection(线段树合并,树链剖分) 传送门:https://ac.nowcoder.com/acm/contest/1112/I 题意: 给你一个n个结点 ...

  7. buerdepepeqi 的模版

    buerdepepeqi的模板 头文件 #include <set> #include <map> #include <deque> #include <qu ...

  8. centos7 创建sftp

    sftp是Secure File Transfer Protocol的缩写,安全文件传送协议.可以为传输文件提供一种安全的网络的加密方法.sftp 与 ftp 有着几乎一样的语法和功能.SFTP 为  ...

  9. LeetCode111_求二叉树最小深度(二叉树问题)

    题目: Given a binary tree, find its minimum depth.The minimum depth is the number of nodes along the s ...

  10. Mac-安装命令一览表

    最近一直在学习Mac,可谓是撞了南墙撞西墙,各种问题需要动手去解决. 今天整理下在笔者Mac下面的各种命令 苹果自带的命令 sudo git ruby node 需要我们安装的命令 brew gem ...