mybatisplus 中查询的实体对应的表名是动态的解决方案

开发中遇到需要查询一些表里的数据,这些数据按照一定的规则存放在不同的数据库表里,例如表名是table_name+月份 table_name_2024_05,table_name_2024_04这样,这些表的结构都相同。

网上找了一些动态修改实体对应数据库表名的方法,操作相对复杂而且跟mybatisplus的版本有关。自己想出一个相对简单的解决方案,思路如下:

1、数据库里创建一个视图table_name_v 对应表table_name(那一批表的结构都一样对应哪一个都可以)

2、在查询数据之前重新建立视图,修改视图对应的表。这样就完成了视图不变,但是查询的内容是根据业务需求对应的表里的数据。

实体代码:

复制代码
@TableName(value = "table_name_v")
public class TableNameV extends BaseEntity {
    private static final long serialVersionUID = 1L;

   
    @TableId
    private Integer id;
   
    private String Name;

mapper代码(关键)

复制代码
public interface TableNameVMapper extends BaseMapper<TableNameV> {

    @Select(" create or replace view table_name_v as    " +
            "   select   id,  name  from  ${tableName}"    )
    void createView(String tableName);	

server代码

复制代码
public class TableNameVServiceImpl implements ITableNameVService {	

    @Autowired
    TableNameVMapper tableNameVMapper;
	
    @Override
    public Map selectList(TableNameV tableNameV) {
         
        id = "2024_05";
        String tableName = "table_name_"+id;
        //动态创建视图 指向对应的分表
        tableNameVMapper.createView(tableName);	
		
		//.......业务代码

相关推荐
小涛不学习3 分钟前
Java高频面试题(带答案版)
java·开发语言
big_rabbit05023 分钟前
JVM堆内存查看命令
java·linux·算法
学习要积极11 分钟前
Springboot图片验证码-EasyCaptcha
java·spring boot·后端
李少兄22 分钟前
企业资源计划(ERP)系统全景指南
java·前端·数据库·erp
波波七25 分钟前
SSM与Springboot是什么关系? -----区别与联系
java·spring boot·后端
myloveasuka27 分钟前
[Java]单列集合
android·java·开发语言
ok_hahaha33 分钟前
java从头开始-黑马点评-基础篇
java·开发语言
小涛不学习1 小时前
Java面试全攻略(基础 + 集合 + 并发 + JVM + 框架)
java·开发语言
SmartBrain1 小时前
Spring Boot 中常用注解总结(AI工程化)
java·人工智能·spring boot·后端
爱丽_1 小时前
AQS 原理主线:state、CLH 队列、独占/共享与实战排查
java·开发语言·jvm