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);	
		
		//.......业务代码

  

相关推荐
我是人✓36 分钟前
Java文件上传三方式对比:从传统到SpringBoot
java·开发语言
欣栀♡44 分钟前
JVM 频繁 Full GC 先看日志括号里的 cause,jstat 的 FGC 在 JDK 8 上会骗人
java·jvm
IT研究室1 小时前
最新计算机毕业设计选题推荐-基于spring boot的葡萄酒文化宣传网站-网站-文档指导-Java-springboot
java·spring boot·课程设计
慧都小项1 小时前
MyEclipse 中创建和测试 JAX-RS REST 接口:从项目配置到 REST Explorer
java·restful·myeclipse·jax-rs
Wang's Blog1 小时前
Java 项目实战: 交友项目 - 入门案例:编写 Dubbo 服务提供者
java·dubbo·交友
秋饼2 小时前
Spring AI 2.0 结构化输出企业级实战:从 BeanOutputConverter 源码到生产级解析容错
java·ai·技术分享·后端开发
摇滚侠2 小时前
《计算机是如何工作的:人人都能懂的计算机软硬件工作原理》第 9 章 机器码与汇编语言 阅读笔记 9
java·开发语言·笔记
Cc.Y2 小时前
Java零基础入门:深入Java核心:文件IO与序列化全解
java·开发语言·python
拿本唠嗑AI研究2 小时前
本体工程实战指南:从建模到可维护的完整落地路径
java·人工智能·python·jena·ontology
lambo mercy2 小时前
Day3:结构化输出
java·数据库·oracle