mybatis-plus动态表名的示例分析
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,这篇文章将为大家详细讲解有关mybatis-plus动态表名的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。实现MP中是通过PaginationInterc
千家信息网最后更新 2025年01月20日mybatis-plus动态表名的示例分析
这篇文章将为大家详细讲解有关mybatis-plus动态表名的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
实现
MP中是通过PaginationInterceptor(分页插件)完成动态表名解析的,配置如下:
依赖
com.baomidou mybatis-plus-boot-starter 3.3.1.tmp
配置类
package com.huanchuang.common.config; import com.baomidou.mybatisplus.extension.parsers.DynamicTableNameParser;import com.baomidou.mybatisplus.extension.parsers.ITableNameHandler;import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;import com.baomidou.mybatisplus.extension.plugins.pagination.optimize.JsqlParserCountOptimize;import org.mybatis.spring.annotation.MapperScan;import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration; import java.util.Collections;import java.util.HashMap; /** * @Package: com.huanchuang.common.config * @Description: * @Author: MILLA * @CreateDate: 2020/09/04 14:42 * @UpdateUser: MILLA * @UpdateDate: 2020/09/04 14:42 * @UpdateRemark: <> * @Version: 1.0 */@Configuration@MapperScan("com.huanchuang.ext.mapper**")@ConditionalOnProperty(prefix = "spring.config", name = "enableMybatisPlusDynamicTable", havingValue = "true")public class MybatisPlusDynamicTableConfig { private static final String DYNAMIC_TABLE_PRE = "common_user"; /** * mybatis-plus分页插件 */ @Bean public PaginationInterceptor paginationInterceptor() { PaginationInterceptor paginationInterceptor = new PaginationInterceptor(); // 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求 默认false paginationInterceptor.setOverflow(false); // 设置最大单页限制数量,默认 500 条,-1 不受限制 paginationInterceptor.setLimit(500);// // 开启 count 的 join 优化,只针对部分 left join paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true)); DynamicTableNameParser dynamicTableNameParser = new DynamicTableNameParser(); dynamicTableNameParser.setTableNameHandlerMap(new HashMap(2) {{ //动态表规则-生成自己需要的动态表名 put(DYNAMIC_TABLE_PRE, (metaObject, sql, tableName) -> DynamicTableTreadLocal.INSTANCE.getTableName()); }}); paginationInterceptor.setSqlParserList(Collections.singletonList(dynamicTableNameParser)); return paginationInterceptor; }}
动态表名存储类
package com.huanchuang.common.config; /** * @Package: com.huanchuang.common.config * @Description: <动态表格存储类> * @Author: MILLA * @CreateDate: 2020/09/04 14:42 * @UpdateUser: MILLA * @UpdateDate: 2020/09/04 14:42 * @UpdateRemark: <> * @Version: 1.0 */public enum DynamicTableTreadLocal { INSTANCE; private ThreadLocal tableName = new ThreadLocal<>(); public String getTableName() { return tableName.get(); } public void setTableName(String tableName) { this.tableName.set(tableName); } public void remove() { tableName.remove(); } }
使用
private void select(int year) { DynamicTableTreadLocal.INSTANCE.setTableName("user_" + year); LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(User.class); List userList = userMapper.list(wrapper ) }@Data
public class User { private Long id; private String userName; private String address; private char sex; private Byte age; }
关于"mybatis-plus动态表名的示例分析"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
动态
篇文章
示例
分析
最大
插件
更多
配置
限制
不错
实用
内容
数量
文章
知识
规则
部分
页面
首页
参考
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
高青染色软件开发
三级网络技术什么时候出成绩
考试作业网络安全第3次
怎么将sql数据库完整导出
合作方服务器清理考核办法
网络安全大考支付宝
追忆2020服务器怎么样
中山淘钻网络技术有限公司
国家网络安全宣传周漫画
进销存软件开发语言
cbol引物数据库
网络安全和别人共用wifi
服务器硬盘能不能做电脑硬盘使用
易语言启动数据库无效
关于网络安全保护的调查报告
网络安全日常管理运维
数据库添加省份代码
三层网络和二层网络安全问题
pppoe服务器地址
山西正规软件开发标准
传奇不同服务器可以共用元宝吗
刀片服务器
期货交易软件开发多少钱
赛马娘有哪些服务器
昆山学软件开发多少钱
swith哪个服务器最便宜
固定ip 网页服务器
金之道软件开发
厦门吉比特网络技术问道
中职网络安全竞赛报名