Mybatis Plus官方文档已经很完善了,为什么还要写一个这样的文档?

  • 官方文档注重知识结构的整理,没有注重学习者的学习顺序
  • 官方文档中的案例注重API描述,比较适合学会mybatis plus之后,遇到问题再去翻阅。对于第一次使用Mybatis的初学者进行学习不是非常友好。
  • 官方文档考虑的是全面完整的介绍Mybatis Plus, 我考虑的角度是:“最佳实践”。
  • 世界上很多东西都符合2/8原则,本文档的目的是将:最重要最常用的那20%帮你提炼出来、快速上手应用!。另外的那80%都是不常用的,有空自己再去官方文档里面学吧!

官网文档地址:https://mybatis.plus/guide/

我会将此文档写成一个系列的内容,记得关注我!zimug.com

我会将此文档写成一个系列的内容,记得关注我!zimug.com

我会将此文档写成一个系列的内容,记得关注我!zimug.com

一、Spring Boot整合Mybatis Plus

通过maven坐标引入依赖

<!-- mybatis -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.1.2</version>
</dependency>
<!-- mysql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!-- lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>

application配置数据源及日志输出级别

# 配置数据源
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/mp?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
username: test
password: <填上数据库访问密码> # 配置日志
logging:
level:
root: warn
com.zimug.boot.launch.mapper: trace

第三步:配置Mybatis的Mapper类文件的包扫描路径

@SpringBootApplication
@MapperScan(basePackages = {"com.zimug.boot.launch.mapper"})
public class BootLaunchApplication {
public static void main(String[] args) {
SpringApplication.run(BootLaunchApplication.class, args);
}
}

二、编码构建实体和Mapper

编写实体类User.java,对应的数据库表创建SQL在文末。

@Data   //lombok注解
public class User {
private Long id;
private String name;
private Integer age;
private String email;
}

编写Mapper类UserMapper.java

public interface UserMapper extends BaseMapper<User> {

}

三、CRUD基础使用案例

3.1.增加一条记录

User user = new User();
user.setName("字母哥");
user.setAge(18); int row = userMapper.insert(user); System.out.println("影响记录数:"+row);
System.out.println("雪花算法id: "+user.getId());

写了上面的java代码,MP将会自动的根据java代码构造下面的SQL去数据库执行。注意:主键默认采用雪花算法

# 主键自动填充了雪花算法
INSERT INTO user ( id, name, age)
VALUES ( ?, ?, ? )

3.2.根据主键删除一条记录

int rows = userMapper.deleteById(1170243901535006722L);
System.out.println("影响记录数:" + rows);

1170243901535006722L是数据插入的时候根据雪花算法生成的id

DELETE FROM user
WHERE id=?

3.3.根据条件删除记录

//构造条件
Map<String,Object> map = new HashMap<>();
map.put("name","字母哥");
map.put("age",18);
//执行删除
int rows = userMapper.deleteByMap(map);
System.out.println("影响记录数:" + rows);
DELETE FROM user
WHERE name = ?
AND age = ?

3.4.根据主键查询一条数据

User user = userMapper.selectById(1089911557332887553L);
System.out.println(user);
SELECT id,name,age,email
FROM user
WHERE id=?

3.5.根据ids批量查找数据

List<Long> ids = Arrays.asList(
1087982257332887553L,
1094590409767661570L,
1094592041087729666L
);
List<User> list = userMapper.selectBatchIds(ids);
list.forEach(System.out::println);
SELECT id,name,age,email
FROM user
WHERE id IN ( ? , ? , ? )

3.6.根据指定参数查询

Map<String, Object> map = new HashMap<>();
//map的key指代的是mysql表中的列名,并非java实体的属性名
map.put("name", "Jone"); List<User> list = userMapper.selectByMap(map);
list.forEach(System.out::println);
SELECT id,name,age,email
FROM user
WHERE name = ?

3.7.指定查询结果字段

QueryWrapper<User> query = new QueryWrapper<>();
query.select("name", "age") //指定查询结果字段
.in("age", Arrays.asList(30, 31, 34, 35))
.last("limit 1");
List<User> list = userMapper.selectList(query);
list.forEach(System.out::println);
SELECT name,age
FROM user
WHERE age IN (?,?,?,?)
LIMIT 1
QueryWrapper<User> query = new QueryWrapper<>();
query.like("name", "J%") //like是MP的条件构造器,表示"模糊查询"
.lt("age", 40) //lt是MP的条件构造器,表示"小于"关系
.select("name", "age");
List<Map<String, Object>> maps = userMapper.selectMaps(query);
maps.forEach(System.out::println);
SELECT name,age
FROM user
WHERE name LIKE ?
AND age < ?

3.8.通过主键id修改数据

User user = new User();
user.setId(1088248199570832385L);
user.setAge(18);
user.setEmail("hadoopcn2@163.com"); int rows = userMapper.updateById(user);
System.out.println("影响记录数:" + rows);
UPDATE user
SET age=?, email=?
WHERE id=?

3.9.根据UpdateWrapper自定义条件修改数据

UpdateWrapper<User> update = new UpdateWrapper<>();
update.eq("name", "Jack").eq("age", 28); //eq是MP的条件构造器,表示"等于"关系 User user = new User();
user.setAge(29);
user.setEmail("hadoopcn2@163.com");
int rows = userMapper.update(user, update);
System.out.println("影响记录数:" + rows);
UPDATE user
SET age=?, email=?
WHERE name = ?
AND age = ?

附录---测试SQL:

DROP TABLE IF EXISTS user;

CREATE TABLE user
(
id BIGINT(20) NOT NULL COMMENT '主键ID',
name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
age INT(11) NULL DEFAULT NULL COMMENT '年龄',
email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',
PRIMARY KEY (id)
);

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

DELETE FROM user;

INSERT INTO user (id, name, age, email) VALUES
(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');

欢迎关注我的博客,里面有很多精品合集

  • 本文转载注明出处(必须带连接,不能只转文字):字母哥博客

觉得对您有帮助的话,帮我点赞、分享!您的支持是我不竭的创作动力! 。另外,笔者最近一段时间输出了如下的精品内容,期待您的关注。

小书MybatisPlus第1篇-整合SpringBoot快速开始增删改查的更多相关文章

  1. 小书MybatisPlus第3篇-自定义SQL

    本文档为一个系列,前面章节: 小书MybatisPlus第1篇-整合SpringBoot快速开始增删改查 小书MybatisPlus第2篇-条件构造器的应用及总结 书接上回,虽然Mybatis Plu ...

  2. 小书MybatisPlus第4篇-表格分页与下拉分页查询

    本文为mybatis系列文档的第4篇,前三篇请访问下面的网址. 小书MybatisPlus第1篇-整合SpringBoot快速开始增删改查 小书MybatisPlus第2篇-条件构造器的应用及总结 小 ...

  3. 小书MybatisPlus第5篇-Active Record模式精讲

    本文为一个系列中的第五节,前四节访问如下地址: 小书MybatisPlus第1篇-整合SpringBoot快速开始增删改查 小书MybatisPlus第2篇-条件构造器的应用及总结 小书Mybatis ...

  4. 小书MybatisPlus第6篇-主键生成策略精讲

    本文为mybatis系列文档的第6篇,前5篇请访问下面的网址. 小书MybatisPlus第1篇-整合SpringBoot快速开始增删改查 小书MybatisPlus第2篇-条件构造器的应用及总结 小 ...

  5. 小书MybatisPlus第7篇-代码生成器的原理精讲及使用方法

    本文是本系列文章的第七篇,前6篇访问地址如下: 小书MybatisPlus第1篇-整合SpringBoot快速开始增删改查 小书MybatisPlus第2篇-条件构造器的应用及总结 小书Mybatis ...

  6. 小书MybatisPlus第8篇-逻辑删除实现及API细节精讲

    本文为Mybatis Plus系列文章的第8篇,前7篇访问地址如下: 小书MybatisPlus第1篇-整合SpringBoot快速开始增删改查 小书MybatisPlus第2篇-条件构造器的应用及总 ...

  7. 小书MybatisPlus第9篇-常用字段默认值自动填充

    本文为Mybatis Plus系列文章的第9篇,前8篇访问地址如下: 小书MybatisPlus第1篇-整合SpringBoot快速开始增删改查 小书MybatisPlus第2篇-条件构造器的应用及总 ...

  8. SpringBoot JPA实现增删改查、分页、排序、事务操作等功能

    今天给大家介绍一下SpringBoot中JPA的一些常用操作,例如:增删改查.分页.排序.事务操作等功能.下面先来介绍一下JPA中一些常用的查询操作: //And --- 等价于 SQL 中的 and ...

  9. springboot+jpa+thymeleaf增删改查的示例(转)

    这篇文章介绍如何使用jpa和thymeleaf做一个增删改查的示例. 先和大家聊聊我为什么喜欢写这种脚手架的项目,在我学习一门新技术的时候,总是想快速的搭建起一个demo来试试它的效果,越简单越容易上 ...

随机推荐

  1. Java实现 蓝桥杯VIP 算法提高 进制转换

    算法提高 进制转换 时间限制:1.0s 内存限制:256.0MB 问题描述 程序提示用户输入三个字符,每个字符取值范围是0-9,A-F.然后程序会把这三个字符转化为相应的十六进制整数,并分别以十六进制 ...

  2. java实现测量到的工程数据

    [12,127,85,66,27,34,15,344,156,344,29,47,-] 这是某设备测量到的工程数据. 因工程要求,需要找出最大的 5 个值. 一般的想法是对它排序,输出前 5 个.但当 ...

  3. Java实现第八届蓝桥杯青蛙跳杯子

    青蛙跳杯子 题目描述 X星球的流行宠物是青蛙,一般有两种颜色:白色和黑色. X星球的居民喜欢把它们放在一排茶杯里,这样可以观察它们跳来跳去. 如下图,有一排杯子,左边的一个是空着的,右边的杯子,每个里 ...

  4. java实现第四届蓝桥杯马虎的算式

    马虎的算式 题目描述 小明是个急性子,上小学的时候经常把老师写在黑板上的题目抄错了. 有一次,老师出的题目是:36 x 495 = ? 他却给抄成了:396 x 45 = ? 但结果却很戏剧性,他的答 ...

  5. 洛谷P1255 数楼梯

    题目描述   楼梯有N阶,上楼可以一步上一阶,也可以一步上二阶.   编一个程序,计算共有多少种不同的走法. 分析与代码   走n阶楼梯,无论是走一次走1阶还是2阶,总得迈出一步,   所以求n阶楼梯 ...

  6. 数据误操作,删库跑路?教你使用ApexSQLLog工具从 SQLServer日志恢复数据!

    前几天同事不小心误操作,将SQLServer库的一张表的一个状态字段给刷成了一个统一状态,由于是update执行所以原来的相关状态无法确定.发生这种事情的时候我的小伙伴背后 一凉,估计心里里面想这怕是 ...

  7. 红楼梦 + 写入 MySQL

    import requests import re import pymysql from bs4 import BeautifulSoup conn = pymysql.Connect(host=' ...

  8. Javascript 16进制转有符号的10进制整数

    在赶项目中开发一个单片机对应的数据接口,需要将一个两字节的十六进制转化为-256~255的10进制数.百度了好久都没有对应且简明的教程,干脆就自己写一篇.   我们都知道JavaScript整数类型有 ...

  9. pip超时问题解决

    阿里云 http://mirrors.aliyun.com/pypi/simple/ 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/ 豆瓣(douban ...

  10. MQ系列(1)——rabbitMQ简介

    前文我们学习了 MQ的相关知识,现在我们来学习一下实现了AMQP协议的 rabbitMQ 中间件.rabbitMQ 是使用 erlang 语言编写的中间件(erlang之父 19年4月去世的,很伟大一 ...