2023年11月26日发(作者:)

MybatisPlus--CRUD接⼝及主键增长策略、⾃动填充、乐观锁

更新数据

⽬录

⼀、insert

1、插⼊操作

@RunWith()

@SpringBootTest

public class CRUDTests {

@Autowired

private UserMapper userMapper;

@Test

public void testInsert(){

User user = new User();

e("Helen");

(18);

il("55317332@");

要想影响所有实体的配置,可以设置全局主键配置

#全局设置主键⽣成策略

-type=auto

其它主键策略:分析 IdType 源码可知

@Getter

public enum IdType {

/**

* 数据库ID⾃增

*/

AUTO(0),

/**

* 该类型为未设置主键类型

*/

NONE(1),

/**

* ⽤户输⼊ID

* 该类型可以通过⾃⼰注册⾃动填充插件进⾏填充

*/

INPUT(2),

2、⾃动填充

项⽬中经常会遇到⼀些数据,每次都使⽤相同的⽅式填充,例如记录的创建时间,更新时间等。

我们可以使⽤MyBatis Plus的⾃动填充功能,完成这些字段的赋值⼯作:

(1)数据库中添加version字段

ALTER TABLE `user` ADD COLUMN `version` INT

(2)实体类添加version字段

并添加 @Version 注解

@Version

@TableField(fill = )

private Integer version;

(3)元对象处理器接⼝添加version的insert默认值

@Override

public void insertFill(MetaObject metaObject) {

......

ldValByName("version", 1, metaObject);

@EnableTransactionManagement

@Configuration

@MapperScan("s_")

public class MybatisPlusConfig {

/**

* 乐观锁插件

*/

@Bean

public OptimisticLockerInterceptor optimisticLockerInterceptor() {

return new OptimisticLockerInterceptor();

}

}

(5)测试乐观锁可以修改成功

测试后分析打印的sql语句,将version的数值进⾏了加1操作

通过map封装查询条件

@Test

public void testSelectByMap(){

HashMap map = new HashMap<>();

("name", "Helen");

("age", 18);

List users = ByMap(map);

@Test

public void testSelectMapsPage() {

Page page = new Page<>(1, 5);

IPage> mapIPage = MapsPage(page, null);

//注意:此⾏必须使⽤ mapIPage 获取记录列表,否则会有数据类型转换错误

ords().forEach(::println);

n(rent());

n(es());

n(e());

n(al());

n(t());

(1)数据库中添加 deleted字段

ALTER TABLE `user` ADD COLUMN `deleted` boolean

(2)实体类添加deleted 字段

并加上 @TableLogic 注解 和 @TableField(fill = ) 注解

@TableLogic

@TableField(fill = )

MyBatis Plus中查询操作也会⾃动添加逻辑删除字段的判断

/**

* 测试 逻辑删除后的查询:

* 不包括被逻辑删除的记录

*/