Code Ease Code Ease
  • 个人博客网站 (opens new window)
  • 好用的工具网站 (opens new window)
  • Java核心基础
  • 框架的艺术
  • 分布式与微服务
  • 开发经验大全
  • 设计模式
  • 版本新特性
数据库系列
大数据+AI
  • xxl-job
运维与Linux
  • 基于SpringBoot和BootStrap的论坛网址
  • 基于VuePress的个人博客网站
  • 基于SpringBoot开发的小功能
  • 做一个自己的IDEA插件
程序人生
关于我
  • 分类
  • 标签
  • 归档

神秘的鱼仔

你会累是因为你在走上坡路
  • 个人博客网站 (opens new window)
  • 好用的工具网站 (opens new window)
  • Java核心基础
  • 框架的艺术
  • 分布式与微服务
  • 开发经验大全
  • 设计模式
  • 版本新特性
数据库系列
大数据+AI
  • xxl-job
运维与Linux
  • 基于SpringBoot和BootStrap的论坛网址
  • 基于VuePress的个人博客网站
  • 基于SpringBoot开发的小功能
  • 做一个自己的IDEA插件
程序人生
关于我
  • 分类
  • 标签
  • 归档
服务器
  • Java核心基础

  • 框架的艺术

    • Spring

    • Mybatis

      • Mybatis的原理介绍及超详细使用
      • Mybatis增删改查,这一篇足以
      • Mybatis配置详细解析
      • MyBatis实现复杂环境的Sql查询
      • Mybatis日志原来是这样使用的
      • Mybatis动态Sql详解
      • Mybatis缓存详解
      • 想在一个项目中实现多数据源切换?几行代码就搞定了
      • 用了MybatisPlus后,我很久没有手写sql了
        • (一)前言
        • (二)什么是MybatisPlus
        • (三)前置准备
        • (四)Mybatis快速入门
          • 1、引入最新的依赖
          • 2、在配置中心配置数据库连接信息
          • 3、在Spring启动类中添加MapperScan注解
          • 4、创建mapper,DO
          • 5、查询数据
          • 6、数据插入
        • (五)总结
      • 用了MyBatis的项目 如何优雅地打印SQL
    • SpringBoot

    • MQ

    • Zookeeper

    • netty

  • 分布式与微服务

  • 开发经验大全

  • 版本新特性

  • Java
  • 框架的艺术
  • Mybatis
CodeEase
2023-09-20
目录

用了MybatisPlus后,我很久没有手写sql了

作者:鱼仔
博客首页: codeease.top (opens new window)
公众号:Java鱼仔

# (一)前言

最早写JDBC的时候,要手动配连接信息,要一条条手写sql语句。后来Mybatis出现了,不需要再手动配置连接信息,sql语句也和代码隔离开来,但是还免不了写Sql。接着出现了MybatisPlus,这下连Sql都不用写了。

# (二)什么是MybatisPlus

首先还是把官网地址拿出来:

https://mp.baomidou.com/guide/

简单来讲,MybatisPlus是Mybatis的增强工具,简化开发,提高开发效率。在官网中,他用这样一幅图表示MybatisPlus和Mybatis之间的关系。

8-1.png

在图片中,MybatisPlus表示它和Mybatis之间的关系就像魂斗罗中的两兄弟一样,互相不会影响,但是能帮你在打怪路上更加轻松。

# (三)前置准备

在讲解MybatisPlus之前,我们先准备一批数据

CREATE DATABASE user;
USE user;
SET NAMES utf8mb4;
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户Id',
  `username` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户名',
  `password` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '密码',
  `gmt_create` datetime(3) NOT NULL COMMENT '创建时间',
  `gmt_modified` datetime(3) NOT NULL  COMMENT '修改时间',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci;
INSERT INTO `user` VALUES
(1,'a001','name1','123456',now(),now()),
(2,'a002','name2','123456',now(),now()),
(3,'a003','name3','123456',now(),now()),
(4,'a004','name4','123456',now(),now()),
(5,'a005','name5','123456',now(),now()),
(6,'a006','name6','123456',now(),now()),
(7,'a007','name7','123456',now(),now()),
(8,'a008','name8','123456',now(),now()),
(9,'a009','name9','123456',now(),now()),
(10,'a010','name10','123456',now(),now())
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

# (四)Mybatis快速入门

# 1、引入最新的依赖

<dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>Latest Version</version>
</dependency>
1
2
3
4
5

# 2、在配置中心配置数据库连接信息

spring.datasource.url=jdbc:mysql://192.168.61.102:3306/user?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
1
2
3
4

# 3、在Spring启动类中添加MapperScan注解

@SpringBootApplication
@MapperScan("com.example.mybatisplus.mapper")
public class MybatisPlusApplication {
    public static void main(String[] args) {
        SpringApplication.run(MybatisPlusApplication.class, args);
    }
}
1
2
3
4
5
6
7

# 4、创建mapper,DO

MybatisPlus可以自动生成Mapper、DO、Service、Controller,这里作为教程,手动建立。MybatisPlus和Mybatis的第一个不同点,这里使用@TableName注解标明当前的实体类对应哪个表

@Data
@TableName("user")
public class UserDO {
    private Long id;
    private String userId;
    private String username;
    private String password;
    private LocalDateTime gmtCreate;
    private LocalDateTime gmtModified;
}
1
2
3
4
5
6
7
8
9
10

创建Mapper类时,继承BaseMapper类,这是MybatisPlus提供的一个基类,封装了常用的查询操作

public interface UserMapper extends BaseMapper<UserDO> {
}
1
2

# 5、查询数据

在使用Mybatis时,数据的CRUD都需要编写sql才能实现,MybatisPlus提供的BaseMapper既提供了Mapper层面的封装接口,又提供了Service层面的封装接口。基于以往的写法,平常开发中会更加倾向于使用Mapper层面的接口 介绍Mapper层面的几个接口:

比如我想查询user表的数据量,我就可以直接调用:

Integer integer = userMapper.selectCount(null);
1

MybatisPlus提供了一个条件构造器Wrappers,可以通过Wrappers构造一系列条件,比如查询username为name1的数据

List<UserDO> userDOList = userMapper.selectList(Wrappers.<UserDO>lambdaQuery()
                .eq(UserDO::getUsername, "name1"));
1
2

又比如我想查询id大于5的数据

List<UserDO> userDOList1 = userMapper.selectList(Wrappers.<UserDO>lambdaQuery()
                .gt(UserDO::getId, 5));
1
2

# 6、数据插入

数据的查询使用上面的方式没有任何问题,插入数据时有几个可以优化的地方,我们可以通过一个注解@TableId设置主键自增方式,可以通过@TableField注解设置数据的自动填充。 因此修改一下UserDO这个类:

@Data
@TableName("user")
public class UserDO {
    @TableId(type = IdType.AUTO)
    private Long id;
    private String userId;
    private String username;
    private String password;
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime gmtCreate;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime gmtModified;
}
1
2
3
4
5
6
7
8
9
10
11
12
13

在实体类中,设置id自增,设置gmtCreate在插入时自动填充,设置gmtModified在创建和修改时自动填充,接着配置自动填充规则:

@Configuration
public class MybatisObjectHandler implements MetaObjectHandler {
    @Override
    public void insertFill(MetaObject metaObject) {
        setFieldValByName("gmtCreate", LocalDateTime.now(),metaObject);
        setFieldValByName("gmtModified", LocalDateTime.now(),metaObject);
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        setFieldValByName("gmtModified",LocalDateTime.now(),metaObject);
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13

最后直接调用API插入数据

@Test
public void test3(){
    UserDO userDO=new UserDO();
    userDO.setUserId("a011");
    userDO.setUsername("name11");
    userDO.setPassword("123456");
    userMapper.insert(userDO);
}
1
2
3
4
5
6
7
8

更多的查询方法可以参考官网,十分详细。但是如果你的sql涉及到多表的连表操作,还是可以自己和MyBatis一样手写sql。

# (五)总结

至此,你应该对MybatisPlus有了大致的了解,另外值得一提的是MybatisPlus的开源组织苞米豆是国内的组织,因此这份文档对国内开发人员来说特别友好,可放心使用。我是鱼仔,我们下期再见!

上次更新: 2025/04/29, 17:22:06
想在一个项目中实现多数据源切换?几行代码就搞定了
用了MyBatis的项目 如何优雅地打印SQL

← 想在一个项目中实现多数据源切换?几行代码就搞定了 用了MyBatis的项目 如何优雅地打印SQL→

最近更新
01
AI大模型部署指南
02-18
02
半个月了,DeepSeek为什么还是服务不可用
02-13
03
Python3.9及3.10安装文档
01-23
更多文章>
Theme by Vdoing | Copyright © 2023-2025 备案图标 浙公网安备33021202002405 | 浙ICP备2023040452号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式