mybatis-plus动态表名的示例分析
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章将为大家详细讲解有关mybatis-plus动态表名的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。实现MP中是通过PaginationInterc
千家信息网最后更新 2026年11月03日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安全错误
数据库的锁怎样保障安全
蓝思科技飞鸽互联网
今日互联网科技
互联网络科技有限公司
未来的互联网科技
苏州互联网科技贷款公司
互联网科技大会
互联网科技素材视频竖屏
顺网科技2021年互联网排名
互联网科技公司的市场部门
互联网教育科技公司vipkid
中国的互联网科技企业的崛起
重庆威客帮互联网科技
科技互联网大厂
知域互联网科技有限公司大骗子
恒生互联网科技指数跳水
科技类公司包括互联网吗
科技赋能视角下互联网保险发展
互联网与数字科技关系
广州梦谷互联网科技有限公司领导
易租星互联网科技有限公司
南京欣网互联网络科技有限公司
互联网科技公司经营范围
互联网科技公司电话
奇酷互联网科技
奇酷互联网络科技
极限挑战互联网科技
新浪科技互联网
深圳艾佳互联网科技
中国互联网金融科技基金
科技信息时代互联网发展