Mybatis-plus分页插件和自动填充
配置详情
@EnableTransactionManagement
@Configuration
@MapperScan("com.itoyoung.dao")
public class MybatisPlusConfig {
/**
* 分页插件
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
paginationInterceptor.setLimit(-1);
return paginationInterceptor;
}
/**
* 自动填充功能
* @return
*/
@Bean
public GlobalConfig globalConfig() {
GlobalConfig globalConfig = new GlobalConfig();
globalConfig.setMetaObjectHandler(new MetaHandler());
return globalConfig;
}
}
@Component
@Slf4j
public class MetaHandler implements MetaObjectHandler {
/**
* 新增数据执行
* @param metaObject
*/
@Override
public void insertFill(MetaObject metaObject) {
this.setFieldValByName("createTime", new Date(), metaObject);
this.setFieldValByName("updateTime", new Date(), metaObject);
}
/**
* 更新数据执行
* @param metaObject
*/
@Override
public void updateFill(MetaObject metaObject) {
this.setFieldValByName("updateTime", new Date(), metaObject);
}
}
应用
- 实体类上加上注解
@TableField(value = "create_time", fill = FieldFill.INSERT)
,插入或更新时会自动填充时间
@Data
@Accessors(chain = true)
public class Channel implements Serializable {
@TableId(type = IdType.AUTO)
private Long id;
/**
* 渠道编码
*/
@NotEmpty(message = "渠道编码不能为空")
private String channelCode;
/**
* 渠道名称
*/
@NotEmpty(message = "渠道名称不能为空")
private String channelName;
/**
* 创建时间
*/
@TableField(value = "create_time", fill = FieldFill.INSERT)
private Date createTime;
/**
* 更新时间
*/
@TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
}
分页查询
@Service(version = "${provider.service.version}")
@Slf4j
@Component
public class ChannelServiceImpl extends ServiceImpl<ChannelMapper, Channel> implements IChannelService {
@Override
public Page<Channel> selectChannelPageByQuery(ChannelListGetQuery query) {
Page<Channel> channelPage = new Page<>();
channelPage.setCurrent(query.getCurrentPage());
channelPage.setSize(query.getPageSize());
QueryWrapper<Channel> queryWrapper = new QueryWrapper<>();
if (StringUtil.isNotBlank(query.getChannelName())) {
queryWrapper.lambda().like(Channel::getChannelName, query.getChannelName());
}
queryWrapper.lambda().orderByDesc(Channel::getId);
IPage<Channel> page = page(channelPage, queryWrapper);
channelPage.setTotal(page.getTotal());
channelPage.setRecords(page.getRecords());
return channelPage;
}
}