MyBatis-Plus(MP)使用教程&知识点笔记
一、环境搭建
1.创建SpringBoot工程
Springboot场景启动器版本以2.2.1.RELEASE为例;
2.导入依赖:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.1</version>
</dependency>
<!--简化实体类-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.18</version>
</dependency>
<!--Mysql依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
</dependencies>
3.在application.yml 进行数据库连接配置:
# DataSource Config
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: 1234
url: jdbc:mysql://localhost:3306/mybatis_plus?serverTimezone=GMT%2B8
# url: jdbc:mysql://localhost:3306/mybatis_plus # 更高版本
# mybatis日志
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
4.在主启动类添加@MapperScan 注解,扫描 Mapper 文件夹
@SpringBootApplication
@MapperScan("com.mapper")
public class DemomptestApplication {
public static void main(String[] args) {
SpringApplication.run(DemomptestApplication.class, args);
}
}
5.添加实体类
并提供构造法方法;
6.添加mapper
创建包 mapper 编写Mapper 接口: XXXMapper.java
@Repository
public interface UserMapper extends BaseMapper<User> {
}
在这里extends 了 BaseMapper 并指定了类型
BaseMapper 内封装了一些对DAO的一些基本的操作
注意:为了避免报错(IDEA在 userMapper 处报错,因为找不到注入的对象,因为类是动态创建的,但是程序可以正确的执行。);可以在 dao 层 的接口上添加 @Repository 注解
7.测试
MP封装的有基本的操作的方法,因此便可以使用直接对Dao进行基本操作
编写测试类:
查询操作:
@SpringBootTest
class DemomptestApplicationTests {
@Autowired
private UserMapper userMapper;
@Test
public void findAll() {
List<User> users = userMapper.selectList(null);
System.out.println(users);
}
}
添加操作:
//添加
@Test
public void testAdd() {
User user = new User();
user.setName("lucy");
user.setAge(20);
user.setEmail("1243@qq.com");
int insert = userMapper.insert(user);
System.out.println(insert);
}
重点:数据库插入id值默认为:全局唯一id
二、知识点:
1.MP的主键生成策略:
MyBatis-Plus默认的主键策略是:ASSIGN_ID (使用了雪花算法)
1.1 ASSIGN_ID
@TableId(type = IdType.ASSIGN_ID)
private String id;
雪花算法:分布式ID生成器
雪花算法是由Twitter公布的分布式主键生成算法,它能够保证不同表的主键的不重复性,以及相同表的主键的有序性。
优点:整体上按照时间自增排序,并且整个分布式系统内不会产生ID碰撞,并且效率较高
1.2 AUTO 自增策略
需要在创建数据表的时候设置主键自增
不设置主键自增,会报id的value没有默认值
实体字段中配置 @TableId(type = IdType.AUTO)```
@TableId(type = IdType.AUTO)
private Long id;
要想影响所有实体的配置,可以设置全局主键配置