插入一条记录。
int insert(T entity);
参数 entity 是实体对象,即要插入的数据内容。
int delete(@Param(Constants.WRAPPER) Wrapper<T> wrapper);
int deleteBatchIds(@Param(Constants.COLLECTION) Collection<? extends Serializable> idList);
int deleteById(Serializable id);
int deleteByMap(@Param(Constants.COLUMN_MAP) Map<String, Object> columnMap);
int update(@Param(Constants.ENTITY) T updateEntity,
@Param(Constants.WRAPPER) Wrapper<T> whereWrapper);
int updateById(@Param(Constants.ENTITY) T entity);
insert 后主键会自动 set 到实体的 ID 字段,所以你只需要 getId()
就好。
预期执行的 SQL 如下:
DELETE FROM department WHERE name = 'test';
使用 Wrapper 对应 Java 中的实现如下:
Wrapper<Department> wrapper = new QueryWrapper<Department>().eq("name", "test");
departmentDao.delete(wrapper);
预期执行的 SQL 如下:
update
department
set name = 'hello-new',
location = 'world'
where
name = 'hello';
使用 Wrapper 对应 Java 中的实现如下:
Department department = new Department(null, "hello-new", "world");
Wrapper<Department> wrapper = new QueryWrapper<Department>()
.eq("name", "hello");
departmentDao.update(department, wrapper);
注意
这里的 null 值表示保持原址不变。
方式有 3 种。最新、也是最灵活的是使用 UpdateWrapper 。它需要 mybatis-pulus 在 3.0+ 。
使用以下方法来进行更新或插入操作:
//updateAllColumnById(entity) // 全部字段更新: 3.0已经移除
mapper.update(
new User().setName("mp").setAge(3), // 非 null 的设值放这里
Wrappers.<User>lambdaUpdate()
.set(User::getEmail, null) // null 的设置放这里
.eq(User::getId, 2) // 再加上查询条件
);
也可以参考下面这种写法:
mapper.update(
null,
Wrappers.<User>lambdaUpdate()
.set(User::getAge, 3)
.set(User::getName, "mp")
.set(User::getEmail, null) //把email设置成null
.eq(User::getId, 2)
);
步骤 1:配置 com.baomidou.mybatisplus.core.config.GlobalConfig$DbConfig。
mybatis-plus:
global-config:
db-config:
logic-delete-field: flag ### 全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置步骤 2)
logic-delete-value: 1 ### 逻辑已删除值(默认为 1)
logic-not-delete-value: 0 ### 逻辑未删除值(默认为 0)
步骤 2:加上注解。
@TableLogic
private Integer deleted;
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
return interceptor;
}
在实体类的字段上加上 @Version 注解:
@Version
private Integer version;
注意
在使用 MybatisPlus 乐观锁功能的时候,记得在你的 update 功能中,为你的 实体类的 version 字段赋值。这样,你才能在 MP 执行的 SQL 语句中看到乐观锁逻辑。