概述
先确认我使用的springboot版本
<spring-boot.version>2.5.6</spring-boot.version>
<!-- mybatis plus版本 --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.0</version> </dependency>
直接上代码
package com.zz.tiger.config.mybatisplus;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;
/**
* mybatis plus配置类
*
* @author tiger
* @date 2021/08/10
*/
@EnableTransactionManagement
@Configuration
public class MybatisPlusConfig {
/**
* 自定义拦截器,先添加先执行
* MybatisPlus分页配置
* @return
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
//配置mybatisplus分页拦截器
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
}
操作数据时候,表存在字段,不用每次手动操作
createTime 创建时间
updateTime 修改时间
createUserId 创建人
updateUserId 修改人
让mybatis-plus帮忙做
package com.zz.tiger.config.mybatisplus;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.util.Date;
/**
* MybatisPlus 公共字段自动填充
*/
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
/**
* 插入时自动填充
**/
@Override
public void insertFill(MetaObject metaObject) {
this.setFieldValByName("createTime", new Date(), metaObject);
this.setFieldValByName("updateTime", new Date(), metaObject);
// SysUserService.getUserId()方法是我获取当前用户id的方法,读者可自行替换
this.setFieldValByName("createUserId", "", metaObject);
this.setFieldValByName("updateUserId", "", metaObject);
this.setFieldValByName("isDeleted", 0, metaObject);
}
/**
* 更新时自动填充
**/
@Override
public void updateFill(MetaObject metaObject) {
this.setFieldValByName("updateTime", new Date(), metaObject);
this.setFieldValByName("updateUserId", "", metaObject);
}
}
package com.zz.tiger.config.mybatisplus;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zz.tiger.util.PageUtils;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Optional;
import static com.zz.tiger.constant.CommonConst.*;
/**
* 分页拦截器
* 请求分页参数拦截
* @author tiger
* @date 2021/07/18
**/
public class PageableHandlerInterceptor implements HandlerInterceptor {
/**
* 在业务处理器处理请求之前被调用。预处理,可以进行编码、安全控制、权限校验等处理
* @param request
* @param response
* @param handler
* @return
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
String currentPage = request.getParameter(PAGE);
String pageSize = Optional.ofNullable(request.getParameter(SIZE)).orElse(DEFAULT_SIZE);
if (StrUtil.isNotEmpty(currentPage)) {
/*开启线程*/
PageUtils.setCurrentPage(new Page<>(Long.parseLong(currentPage), Long.parseLong(pageSize)));
}
return true;
}
/**
* 在DispatcherServlet完全处理完请求后被调用,可用于清理资源等。返回处理(已经渲染了页面);
* @param request
* @param response
* @param handler
* @param ex
*/
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
/**
* 调用完成销毁此线程
*/
PageUtils.remove();
}
}
package com.zz.tiger.util;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import java.util.Objects;
/**
* 分页工具类
*
* @author tiger
* @date 2021/07/18
* @since 1.0.0
**/
public class PageUtils {
/*
类用来提供线程内部的局部变量,不同的线程之间不会相互干扰
*/
private static final ThreadLocal<Page<?>> PAGE_HOLDER = new ThreadLocal<>();
public static void setCurrentPage(Page<?> page) {
PAGE_HOLDER.set(page);
}
public static Page<?> getPage() {
Page<?> page = PAGE_HOLDER.get();
if (Objects.isNull(page)) {
setCurrentPage(new Page<>());
}
return PAGE_HOLDER.get();
}
public static <T> Page<T> getPage2(Class<T> object) {
Page<?> page = PAGE_HOLDER.get();
if (Objects.isNull(page)) {
setCurrentPage(new Page<>());
}
return (Page<T>) PAGE_HOLDER.get();
}
public static Long getCurrent() {
return getPage().getCurrent();
}
public static Long getSize() {
return getPage().getSize();
}
public static Long getLimitCurrent() {
return (getCurrent() - 1) * getSize();
}
/**
* 销毁
*/
public static void remove() {
PAGE_HOLDER.remove();
}
}
使用:
/**
* <p>
* 用户信息表 服务实现类
* </p>
*
* @author tiger
* @since 2022-12-29
*/
@Service
public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> implements ISysUserService {
@Override
public R lists(String system, String name, String status) {
//
PageUtils.getLimitCurrent();
//
PageUtils.getSize();
QueryWrapper<SysUser> qw = new QueryWrapper<>();
qw.eq(StrUtil.isNotEmpty(system),SysUser.SYSTEM, system);
qw.and(StrUtil.isNotBlank(system),w->w.like(SysUser.USER_NAME, name).or().like(SysUser.NICK_NAME, name));
qw.eq(StrUtil.isNotEmpty(status),SysUser.STATUS, status);
Page<SysUser> page2 = PageUtils.getPage2(SysUser.class);
return R.ok(page(page2,qw));
}
}
最后
以上就是鳗鱼裙子为你收集整理的mybatisplus封装分页拦截器和插入修改拦截器的全部内容,希望文章能够帮你解决mybatisplus封装分页拦截器和插入修改拦截器所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复