Mybatis-Plus-【通俗易懂全讲解】

2023-11-08

Mybatis-Plus

简介

MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
详情见官网:https://baomidou.com/pages/24112f/#%E7%89%B9%E6%80%A7

快速入门

  1. 建表
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)
);

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');
  1. 创建一个空的Spring Boot工程
  2. 添加依赖MySQL,lombok,mybatis_plus
<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
	<version>8.0.28</version>
</dependency>
<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
	<version>1.18.22</version>
</dependency>
<dependency>
	<groupId>com.baomidou</groupId>
	<artifactId>mybatis-plus-boot-starter</artifactId>
	<version>3.5.1</version>
</dependency>
  1. 编写配置文件,连接数据库
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis_plus?useSSL=true&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

5. 传统方式pojo-dao(连接mybatis,配置mapper.xml文件)-service-controller
5. 使用了mybatis-plus之后(继承BaseMapper接口,省略了mapper.xml文件

  • pojo
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
   
    private Long id;
    private String name;
    private Integer age;
    private String email;
}
  • mapper接口
//在对应的mapper上面继承基本接口就可以 BaseMapper
@Repository//代表持久层
public interface UserMapper extends BaseMapper<User> {
    //所有的CRUD操作都已经编写完成了
    //你不需要像以前一样配置一大堆文件了
}
  • 注意点,我们需要在主启动类上去扫描我们mapper包下的所有接口@MapperScan("com.kuang.mapper")
//扫描我们的mapper文件夹
@MapperScan("com.kuang.mapper")
@SpringBootApplication
public class MybatisPlusApplication {
   

    public static void main(String[] args) {
   
        SpringApplication.run(MybatisPlusApplication.class, args);
    }

}
  • 测试类中测试
@SpringBootTest
class MybatisPlusApplicationTests {
   
    //继承了BaseMapper,所有方法都来自父类,我们也可以编写自己的拓展方法
    @Autowired
    private UserMapper userMapper;

    @Test
    void contextLoads() {
   
        //这里的参数是一个Wrapper,条件构造器,这里我们先不用,将其设为null
        //查询全部用户
        List<User> userList = userMapper.selectList(null);
        userList.forEach(System.out::println);
    }
}

思考问题

  1. SQL谁帮我们写的?MyBatis-Plus
  2. 方法哪里来的?MyBatis-Plus

配置日志

我们所有的sql现在是不可见的,我们希望知道它是怎么执行的,所以我们必须要看日志!

# 配置日志
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

在这里插入图片描述

配置完毕日志之后,后面的学习就需要注意这个自动生成的SQL,你们就会喜欢上Mybatis-Plus!

CRUD扩展

插入操作

insert插入

    @Test//测试插入
    public void textInsert() {
   
        User user = new User();
        user.setName("lala啦");
        user.setAge(3);
        user.setEmail("465386@qq.com");
        int result = userMapper.insert(user);//帮我们自动生成id
        System.out.println(result);//受影响的行数
        System.out.println(user);//发现,id会自动回填
    }

在这里插入图片描述

数据库插入的id的默认值为:全局的唯一id

主键生成策略

默认ASSIGN_ID全局唯一id

分布式系统唯一id生成:https://www.cnblogs.com/haoxinyue/p/5208136.html
雪花算法:
snowflake是Twitter开源的分布式ID生成算法,结果是一个long型的ID。其核心思想是∶使用41bit作为毫秒数,10bit作为机器的ID( 5个bit是数据中心,5个bit的机器ID),12bit作为毫秒内的流水号(意味着每个节点在每毫秒可以产生4096个ID),最后还有一个符号位,永远是0。可以保证几乎全球唯一!

主键自增

我们需要配置主键自增:

  1. 实体类字段上@TableId(type = IdType.AUTO)
  2. 数据库字段一定要是自增的!
    在这里插入图片描述
  3. 再次测试插入即可,并且自增量为1!

其余IdType的源码解释

public enum IdType {
   
    AUTO(0),//数据库id自增
    NONE(1),//未设置主键
    INPUT(2),//手动输入,就需要自己配置id了
    ASSIGN_ID(3),//默认的全局唯一id 
    ASSIGN_UUID(
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mybatis-Plus-【通俗易懂全讲解】 的相关文章

随机推荐

  • CTFSHOW网络迷踪-低碳环保

    记录一个解过的一道OSINT题目 低碳环保 题目来源 CTFshow 题目 解题 先下载附件 得到如图 首先尝试百度识图 但是识别不到 然后我看到右边建筑上方有 奉献清洁能源 几个红字 尝试搜索 搜索到了各种公司 还是没头绪 但是经过观察
  • 租车骑绿岛【C语言】

    租车骑绿岛 部门组织绿岛骑行团建活动 租用公共双人自行车 每辆自行车最多坐两人 最大载重m 给出部门每个人的体重 请问最多需要租用多少双人自行车 输入描述 第一行两个数字m n 分别代表自行车限重 部门总人数 第二行 n个数字 代表每个人的
  • JPA freemaker动态的拼接SQL

    spring data jpa extra https github com slyak spring data jpa extra spring data jpa template 项目地址 https gitee com silentw
  • cJSON解析JSON字符串

    一 为何选择cJSON 我们在使用JSON格式时 如果只是处理简单的协议 可以依据JSON格式 通过对字符串的操作来进行解析与创建 然而随着协议逐渐复杂起来 经常会遇到一些未考虑周全的地方 需要进一步的完善解析方法 此时 使用比较完善的JS
  • <>读书笔记

    lt
  • MySQL+jdbc理论考试【无答案】

    单选 共15题 每题2分 共30分 1 下面关于mysql的说法正确的是 A 默认的端口号是1521 B 默认的端口号是80 C 默认的端口号是3306 D 默认的端口号是443 2 下面排序的说法正确的是 A 默认是升序排序 B asc是
  • Hbuild点击发行,没有反应

    根目录下有 manifest json pages json 等等 才可以打包 换句话说 打开uniapp的文件时 要打开目录下有manifest json pages json的文件 文件上层不要再套一层文件
  • Linux内核移植

    目录 创建VSCode 工程 NXP官方开发板Linux 内核编译 修改顶层Makefile 配置并编译Linux内核 生成zImage和 dtb Linux 内核启动测试 根文件系统缺失错误 在Linux中添加自己的开发板 添加开发板默认
  • matlab仿真gmid电路,bandgap电路稳定性仿真---频响、相位裕度、环路增益

    仿真需要对原理图稍作修改 需在运放的闭环路径中加入iprobe元件 电路中存在两个反馈电路 一个正反馈 如图1组成路径 一个负反馈 如图2组成路径 两个反馈都经过了运放的输出端 故我这儿加在了输出端 可以同时仿真出两个反馈环路的频率响应 环
  • spring boot2整合kafka及遇到Exception thrown when sending a message with key='null'问题

    spring boot2整合kafka及遇到Exception thrown when sending a message with key null 问题 最近在学习spring boot2和kafka 就用学着使用spring boot
  • SpringBoot之CommandLineRunner接口和ApplicationRunner接口

    我们在开发中可能会有这样的情景 需要在容器启动的时候执行一些内容 比如读取配置文件 数据库连接之类的 SpringBoot给我们提供了两个接口来帮助我们实现这种需求 这两个接口分别为CommandLineRunner和Application
  • SQL技巧:如何统计博客每天的总点击量和每天的总点击人数

    最近由于工作安排 需要统计一篇火爆的博客每天的总点击量和每天的总点击人数 其实主要考验的就是编写SQL的能力 这里我们需要用到 GROUP BY 和 COUNT关键字 关于这2个关键字的用法 网上有很多 这里不再赘述 分组统计每天的总点击量
  • Qt之QtSoapHttpTransport 访问WebService

    简述 Web Service技术 能使得运行在不同机器上的不同应用无须借助附加的 专门的第三方软件或硬件就可相互交换数据或集成 依据Web Service规范实施的应用之间 无论它们所使用的语言 平台或内部协议是什么 都可以相互交换数据 Q
  • win10 安装mingw 使用makefile

    下载了一个新代码 里面有 h c 和 Makefile文件 说明文件中写道先编译 compiling Type make in a shell 在控制台上输入make 首先win r打开控制台 输入cmd 输入e 回车 cd github
  • mybatis查询返回空,sql数据库执行有数据

    需要编写一个统计功能 在Navicat Premium里调整好sql 然后编写后台代码 controller service serviceImpl dao 在serviceImpl 上添加 Service 注解 在dao 添加 Repos
  • 【测试 3】三、软件测试方法

    4 软件测试方法 包括白盒测试 灰盒测试 黑盒测试 静态测试 动态测试 手动测试 自动测试等 学习目标 熟悉白盒测试方法 掌握黑盒测试方法 掌握黑盒测试用例设计的方法 等价类划分法 边界值分析法 因果 图分析法 判定表分析法 正交试验法等
  • 图像特征提取三大算法:HOG特征,LBP特征,Haar特征

    一 HOG特征 from http dataunion org 20584 html 1 HOG特征 方向梯度直方图 Histogram of Oriented Gradient HOG 特征是一种在计算机视觉和图像处理中用来进行物体检测的
  • Intellij IDEA运行报Command line is too long的解决办法

    报错信息大概如下 Error running xxx Command line is too long Shorten command line for xxx or also for Application default configu
  • leet116. 每个节点的右向指针

    题目 给定一个二叉树 struct TreeLinkNode TreeLinkNode left TreeLinkNode right TreeLinkNode next 填充他的每个 next 下一个 指针 让这个指针指向其下一个右侧节点
  • Mybatis-Plus-【通俗易懂全讲解】

    Mybatis Plus 简介 MyBatis Plus opens new window 简称 MP 是一个 MyBatis opens new window 的增强工具 在 MyBatis 的基础上只做增强不做改变 为简化开发 提高效率