mybatis-plus动态表名的示例分析
发表于:2025-11-12 作者:千家信息网编辑
千家信息网最后更新 2025年11月12日,这篇文章将为大家详细讲解有关mybatis-plus动态表名的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。实现MP中是通过PaginationInterc
千家信息网最后更新 2025年11月12日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安全错误
数据库的锁怎样保障安全
如何学会看待网络安全
靠得住的软件开发培训班
查看服务器是否装了mysql
关于网络安全的建议发言
天津专业网络技术服务代理商
服务器ip被网监禁封
忠县网络技术
计算机的网络安全是指( )
护护苗网络安全课堂
国内服务器可以使用外国域名吗
网络技术也叫什么
磁盘阵列未找到通往服务器的路径
怎样学习用数据库
360网络安全对国家
泰拉瑞亚进服务器注册流程
南昌玩lol服务器
网络安全国际治理
山东泰山服务器
湖州大规模分布式存储数据库
正规网络技术服务有哪些
物流 软件开发
免费安装一台云服务器多少钱
存储服务器开机界面
saas系统的数据库在哪
成都海康威视网络技术有限公司
数据库技术在供应链里的应用
兴义社交软件开发公司
中央网络安全报告
软件工程算计算机网络技术类
徐汇区网络技术服务值多少钱