目录

02-MyBatisPlus入门

官网:http://mp.baomidou.com/

参考教程:http://mp.baomidou.com/guide/

MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化 开发、提高效率而生。

创建测试表

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');

/posts/02-mybatisplus%E5%85%A5%E9%97%A8/assets/image.png

创建 spring boot 项目

两种方式任选其一

spring 官网创建 spring boot 项目

https://start.spring.io/ /posts/02-mybatisplus%E5%85%A5%E9%97%A8/assets/image-1.png

使用 Spring Initializr 快速初始化一个 Spring Boot 工程

  • Group:com.eoebook
  • Artifact:mybatis-plus
  • 版本:2.2.1.RELEASE

调整 Spring boot 的版本 /posts/02-mybatisplus%E5%85%A5%E9%97%A8/assets/image-2.png

配置 Maven 依赖

<!--mybatis-plus-->
<dependency>
	<groupId>com.baomidou</groupId>
	<artifactId>mybatis-plus-boot-starter</artifactId>
	<version>3.0.5</version>
</dependency>
<!--mysql-->
<dependency>
	<groupId>com.mysql</groupId>
	<artifactId>mysql-connector-j</artifactId>
	<version>8.2.0</version>
</dependency>
<!--lombok用来简化实体类-->
<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
</dependency>

配置 application.properties

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/guli?serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=***********

创建 User Bean

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

创建 UserMapper

@Repository
public interface UserMapper extends BaseMapper<User> {
}

创建应用启动类

@MapperScan("com.eoebook.mapper")
@SpringBootApplication
public class DemoApplication {
	public static void main(String[] args) {
		SpringApplication.run(DemoApplication.class, args);
	}
}

创建单元测试类

@RunWith(SpringRunner.class)
@SpringBootTest
class DemoApplicationTests {
	@Autowired
	private UserMapper userMapper;
	@Test
	public void testSelectList() {
		System.out.println(("----- selectAll method test ------"));
		//UserMapper 中的 selectList() 方法的参数为 MP 内置的条件封装器 Wrapper
		//所以不填写就是无任何条件
		List<User> users = userMapper.selectList(null);
		users.forEach(System.out::println);
	}
}

配置打印 SQL

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

插入数据

	@Test
	public void addUser() {
		System.out.println(("----- addUser method test ------"));
		User user = new User();
		user.setAge(18);
		user.setName("阿芳");
		user.setEmail("xxxx@qq.com");
		int i = userMapper.insert(user);
		System.out.println("插入成功数据笔数:"+i);
		System.out.println(user);// id 自动回填
	}

/posts/02-mybatisplus%E5%85%A5%E9%97%A8/assets/image-3.png

更新数据

	@Test
	public void updateUser() {
		User user = new User();
		user.setId(1L);
		user.setAge(28);
		int result = userMapper.updateById(user);
		System.out.println(user);
	}

MP主键

  • MP不需要设置主键id,会自动给我们生成19位的主键id /posts/02-mybatisplus%E5%85%A5%E9%97%A8/assets/image-5.png /posts/02-mybatisplus%E5%85%A5%E9%97%A8/assets/image-4.png

MP主键的生成策略

  • AUTO:自动增长
  • ID_WORKER:MP自带策略,生成19位数字类型,比如long
  • ID_WORKER_STR:MP自带策略,生成19位String类型
  • INPUT:自己设置id值
  • NONE:自己设置id值
  • UUID:随机唯一值

MP主键生成策略配置

  1. 单表配置
    • 需要在创建数据表的时候设置主键自增
    • 实体字段中配置 @TableId(type = IdType.AUTO)
@TableId(type = IdType.AUTO)
private Long id;
  1. 全局配置
#全局设置主键生成策略
mybatis-plus.global-config.db-config.id-type=auto
  • MP 乐观锁
  • MP 分页插件
  • MP 逻辑删除
  • MP 性能分析
  • 根据数据库表结构生成Bean

Swagger2

统一返回数据格式