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');
创建 spring boot 项目
两种方式任选其一
spring 官网创建 spring boot 项目
使用 Spring Initializr 快速初始化一个 Spring Boot 工程
- Group:com.eoebook
- Artifact:mybatis-plus
- 版本:2.2.1.RELEASE
调整 Spring boot 的版本
配置 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 自动回填
}
更新数据
@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
MP主键的生成策略
- AUTO:自动增长
- ID_WORKER:MP自带策略,生成19位数字类型,比如long
- ID_WORKER_STR:MP自带策略,生成19位String类型
- INPUT:自己设置id值
- NONE:自己设置id值
- UUID:随机唯一值
MP主键生成策略配置
- 单表配置
- 需要在创建数据表的时候设置主键自增
- 实体字段中配置 @TableId(type = IdType.AUTO)
@TableId(type = IdType.AUTO)
private Long id;
- 全局配置
#全局设置主键生成策略
mybatis-plus.global-config.db-config.id-type=auto
- MP 乐观锁
- MP 分页插件
- MP 逻辑删除
- MP 性能分析
- 根据数据库表结构生成Bean
Swagger2
统一返回数据格式