Mybatis-plus常用API全套教程,看完没有不懂的


Mybatis-plus常用API全套教程,看完没有不懂的

文章插图

前言官网:Mybatis-plus官方文档 简化 MyBatis !
创建数据库数据库名为mybatis_plus
创建表创建user表
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));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');注意:-- 真实开发中往往都会有这四个字段,version(乐观锁)、deleted(逻辑删除)、gmt_create(创建时间)、gmt_modified(修改时间)
初始化项目使用SpringBoot器 初始化!导入依赖<!-- 数据库驱动 --><dependency><groupId>MySQL</groupId><artifactId>mysql-connector-JAVA</artifactId></dependency><!-- lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><!-- mybatis-plus --><!-- mybatis-plus 是自己开发,并非官方的! --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.0.5</version></dependency>注意:尽量不要同时导入 mybatis 和 mybatis-plus!避免版本的差异造成无法预知的问题 。
连接数据库创建Application.yml
spring:profiles:active: devdatasource:# 驱动不同 mysql 5com.mysql.jdbc.Driver#mysql 8com.mysql.cj.jdbc.Driver、需要增加时区的配置serverTimezone=GMT%2B8url: jdbc:mysql://localhost:3306/mybatis_plus?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8driver-class-name: com.mysql.cj.jdbc.Driverusername: rootpassword: root业务代码实体类@Data@AllArgsConstructor@NoArgsConstructorpublic class User {private Long id;private String name;private Integer age;private String email;}mapper接口
import com.baomidou.mybatisplus.core.mapper.BaseMapper;import com.kuang.pojo.User;import org.springframework.stereotype.Repository;// 在对应的Mapper上面继承基本的类 BaseMapper@Repository // 代表持久层public interface UserMapper extends BaseMapper<User> {// 所有的CRUD操作都已经编写完成了}注意点,我们需要在主启动类上去扫描我们的mapper包下的所有接口
@MapperScan(“com.kwhua.mapper”)
测试@SpringBootTestclass MybatisPlusApplicationTests {// 继承了BaseMapper,所有的方法都来自己父类// 我们也可以编写自己的扩展方法!@Autowiredprivate UserMapper userMapper;@Testvoid contextLoads() {// 参数是一个 Wrapper,条件构造器,这里我们先设置条件为空,查询所有 。List<User> users = userMapper.selectList(null);users.forEach(System.out::println); }}所有数据输出
Mybatis-plus常用API全套教程,看完没有不懂的

文章插图
 
配置日志我们所有的sql现在是不可见的,我们希望知道它是怎么执行的,所有我们要配置日志的输出
application.yml文件添加日志配置
#配置日志mybatis-plus:configuration:log-impl: org.Apache.ibatis.logging.stdout.StdOutImpl查看执行sql的日志信息
Mybatis-plus常用API全套教程,看完没有不懂的

文章插图
 
三.Mybatis-plus的CRUD1.插入操作// 测试插入@Testpublic void testInsert(){User user = new User();user.setName("kwhua_mybatis-plus_insertTest");user.setAge(15);user.setEmail("310697723@qq.com");int result = userMapper.insert(user); // 帮我们自动生成idSystem.out.println(result); // 受影响的行数System.out.println(user); // 看到id会自动填充 。}
Mybatis-plus常用API全套教程,看完没有不懂的

文章插图
 
看到id会自动填充 。数据库插入的id的默认值为:全局的唯一id
主键生成策略1)主键自增
1、实体类字段上 @TableId(type = IdType.AUTO)
2、数据库id字段设置为自增!
Mybatis-plus常用API全套教程,看完没有不懂的

文章插图
 
3、再次测试(可以看到id值比上次插入的大1)
Mybatis-plus常用API全套教程,看完没有不懂的

文章插图
 
id的生成策略源码解释
public enum IdType {AUTO(0), // 数据库id自增NONE(1), // 未设置主键INPUT(2), // 手动输入ID_WORKER(3), // 默认的方式,全局唯一idUUID(4), // 全局唯一id uuidID_WORKER_STR(5); //ID_WORKER 字符串表示法}


推荐阅读