代码生成:https://blog.csdn.net/qq_41835813/article/details/106993101
官网:https://mp.baomidou.com/guide/
pom和yml都在代码生成的博客
主键生成策略
自动填充
bean
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="User对象", description="InnoDB free: 10240 kB")
public class User implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.ID_WORKER)
private Long id;
private String name;
@ApiModelProperty(value = "创建时间")
@TableField(fill = FieldFill.INSERT)
private Date gmtCreate;
@ApiModelProperty(value = "修改时间")
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date gmtModified;
}ied;
配置
@Component
public class MyMeta implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
this.setFieldValByName("gmtCreate",new Date(),metaObject);
this.setFieldValByName("gmtModified",new Date(),metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
this.setFieldValByName("gmtModified",new Date(),metaObject);
}
}
==> Preparing: INSERT INTO user ( id, name, gmt_create, gmt_modified ) VALUES ( ?, ?, ?, ? )
==> Parameters: 1277071425278091266(Long), 强月城(String), 2020-06-28 10:48:49.284(Timestamp), 2020-06-28 10:48:49.284(Timestamp)
<== Updates: 1
乐观锁
@TableField(fill = FieldFill.INSERT)
@Version
private Integer version;
配置
@Configuration
@EnableTransactionManagement
public class MybatisPlusConfig {
@Bean
public OptimisticLockerInterceptor optimisticLockerInterceptor(){
return new OptimisticLockerInterceptor();
}
}
this.setFieldValByName("version",1,metaObject);
@Test
void update(){
//乐观锁要先查改
User user = service.selectUser(1277073456151666690L);
user.setName("强月城");
service.updateUser(user);
}
==> Preparing: SELECT id,name,gmt_create,gmt_modified,version FROM user WHERE id=?
==> Parameters: 1277073456151666690(Long)
<== Columns: id, name, gmt_create, gmt_modified, version
<== Row: 1277073456151666690, qyc, 2020-06-28 10:56:53.0, 2020-06-28 11:03:18.0, 1
<== Total: 1
==> Preparing: UPDATE user SET name=?, gmt_create=?, gmt_modified=?, version=? WHERE id=? AND version=?
==> Parameters: 强月城(String), 2020-06-28 10:56:53.0(Timestamp), 2020-06-28 11:07:29.96(Timestamp), 2(Integer), 1277073456151666690(Long), 1(Integer)
<== Updates: 1
分页
配置
@Bean
public PaginationInterceptor paginationInterceptor(){
return new PaginationInterceptor();
}
service null:条件为空
public Page<User> page(int num, int size) {
Page<User> page = new Page<>(num,size);
userMapper.selectPage(page,null);
return page;
}
page.getSize() = 2
page.getTotal() = 4
page.getPages() = 2
User(id=1277073456151666690, name=强月城, gmtCreate=Sun Jun 28 10:56:53 CST 2020, gmtModified=Sun Jun 28 11:07:29 CST 2020, version=2)
User(id=1277077755846000641, name=qyc1, gmtCreate=Sun Jun 28 11:13:58 CST 2020, gmtModified=Sun Jun 28 11:13:58 CST 2020, version=1)
条件
public Page<User> page(int num, int size) {
Page<User> page = new Page<>(num,size);
QueryWrapper wrapper = new QueryWrapper();
wrapper.like("name","q");
userMapper.selectPage(page,wrapper);
return page;
}
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@6cd64b3f]
page.getSize() = 2
page.getTotal() = 3
page.getPages() = 2
User(id=1277077755846000641, name=qyc1, gmtCreate=Sun Jun 28 11:13:58 CST 2020, gmtModified=Sun Jun 28 11:13:58 CST 2020, version=1)
User(id=1277078409368907778, name=qyc2, gmtCreate=Sun Jun 28 11:16:34 CST 2020, gmtModified=Sun Jun 28 11:16:34 CST 2020, version=1)
逻辑删除
@TableLogic
@TableField(fill = FieldFill.INSERT)
private Integer deleted;
0未删 1已删
this.setFieldValByName("deleted",0,metaObject);
@Test
void deleted(){
userMapper.deleteById(1277087307123429377L);
}
--------------