先确认我使用的springboot版本
复制代码
1<spring-boot.version>2.5.6</spring-boot.version>
复制代码
1
2
3
4
5
6<!-- mybatis plus版本 --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.0</version> </dependency>
直接上代码
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29package 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; } }
操作数据时候,表存在字段,不用每次手动操作
复制代码
1createTime 创建时间
复制代码
1updateTime 修改时间
复制代码
1createUserId 创建人
复制代码
1updateUserId 修改人
让mybatis-plus帮忙做
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32package 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); } }
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48package 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(); } }
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49package 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(); } }
使用:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24/** * <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封装分页拦截器和插入修改拦截器内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复