mybatis-plus动态表名的示例分析
发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,这篇文章将为大家详细讲解有关mybatis-plus动态表名的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。实现MP中是通过PaginationInterc
千家信息网最后更新 2025年02月23日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安全错误
数据库的锁怎样保障安全
网络技术 国际会议
软件开发各个阶段的个人信息保护
软件开发培训哪里好
hp服务器显示器
软件开发预付
商务数据库分析英语
民法典关于网络安全的规定
网络安全代运营
精益创业法在软件开发
数据库几种模型
虎牙游戏服务器排名
数据库锁表图片大全
网络安全知识 灯谜
机关 网络安全
网络技术专业简短介绍英文
租服务器 10万一天
互联网科技mv
服务器没有显卡怎么进桌面
app和服务器通信安全性
服务器操作系统linux占比
数据库技术与会计实务
长沙智造网络安全事业单位
cs赛盟服务器
临沂电商软件开发解决方案
云服务器控制面板管理
渭南高新区网络安全培训
思科服务器价格
服务器nacos自动关闭
数据库系统概论实验指导书
神话数据库教程