mybatis plus简介

详见mybatis plus的官网

业务要求

业务上要求存储数据的时候根据某个字段动态的选择数据要存储的表.

如根据code字段: code->[1001,1002]来进行选择存储的表:

经过下面的配置实现动态表名如 --> table1_1001,table_1002的效果.以此动态生成表名的效果.

具体实现

MPConfig.java

import com.alibaba.fastjson.JSON;

import com.alibaba.fastjson.JSONObject;

import com.baomidou.mybatisplus.extension.parsers.DynamicTableNameParser;

import com.baomidou.mybatisplus.extension.parsers.ITableNameHandler;

import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;

import org.apache.ibatis.reflection.MetaObject;

import org.mybatis.spring.annotation.MapperScan;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import java.util.Collections;

import java.util.HashMap;

import java.util.List;

/**

* @Author: xuzz

* @Description:

* @Date: Created in 上午11:22 19-10-12

* @Modified By:

*/

@Configuration

@MapperScan("com.dao")

public class MPConfig {

@Autowired

private Tables tableNames;

/**

* @Author: xuzz

* @Date: 上午11:46 19-10-12

* 动态表名

*/

@Bean

public PaginationInterceptor paginationInterceptor(){

PaginationInterceptor paginationInterceptor = new PaginationInterceptor();

DynamicTableNameParser dynamicTableNameParser = new DynamicTableNameParser();

dynamicTableNameParser.setTableNameHandlerMap(new HashMap(2){{

//涉及表集合

List tables = tableNames.getTableNames();

//动态表规则 初始表名+_+code

tables.forEach(tableTitle -> put(tableTitle,(metaObject, sql, tableName) -> tableName + "_" + String.valueOf(getParamValue("关键字段名",metaObject))));

}});

paginationInterceptor.setSqlParserList(Collections.singletonList(dynamicTableNameParser));

return paginationInterceptor;

}

/**

* @Author: xuzz

* @Date: 下午2:55 19-10-12

* 获取参数值

*/

private Object getParamValue(String title, MetaObject metaObject){

//获取参数

Object originalObject = metaObject.getOriginalObject();

JSONObject originalObjectJSON = JSON.parseObject(JSON.toJSONString(originalObject));

JSONObject boundSql = originalObjectJSON.getJSONObject("boundSql");

JSONObject parameterObject = boundSql.getJSONObject("parameterObject");

return parameterObject.get(title);

}

Tables.java 表头列表类

@Configuration

@ConfigurationProperties("mp")

public class Tables {

private List tableNames;

public List getTableNames() {

return tableNames;

}

public void setTableNames(List tableNames) {

this.tableNames = tableNames;

}

}

application.yml

mp:

tableNames: #表头列表

- table1

- table2

- table3

其他基础配置的无异

到此这篇关于mybatis plus 的动态表名的配置详解的文章就介绍到这了,更多相关mybatis plus 动态表名配置内容请搜索云海天教程以前的文章或继续浏览下面的相关文章希望大家以后多多支持云海天教程!

原文链接:https://blog.csdn.net/XuZZ94/article/details/102547671

mybatis获取表名_mybatis plus 的动态表名的配置详解相关推荐

  1. mycat的主从关系 垂直分库 水平分表 以及mycat分片联表查询的配置详解(mysql5.7系列)

    主从关系 准备三台不同ip的虚拟机 (第一批)主从关系的配置 主192.168.47.131 配置/etc/my.cnf,在[mysqld]下配置 log-error=/var/log/mysqld. ...

  2. mybatis 同名方法_MyBatis(四):xml配置详解

    目录 1.我们将 数据库的配置语句写在 db.properties 文件中 2.在 mybatis-configuration.xml 中加载db.properties文件并读取 通过源码我们可以分析 ...

  3. 无表单不业务,动态表单让业务系统更高级

    编者按:表单对于业务系统有什么意义?本文分析了业务系统和表单的关系,并比较了普通表单和动态表单和优劣,指出动态表单对业务系统的增益,最后介绍了动态表单的应用实践. 关键词:低代码平台:表单引擎:动态表 ...

  4. easycode 表配置_idea的easyCode的 MybatisPlus模板的配置详解

    EasyCode 插件 EasyCode 插件 是一款根据表结构生成代码的很方便的Idea插件, 强烈推荐. 并且可以自定义模板来控制生成的类 我在使用的过程中发现一些问题,现在把解决办法记录下来, ...

  5. mybatis基础总结02 -配置详解

    二 mybatis配置详解 MyBatis最关键的组成部分是SqlSessionFactory,我们可以从中获取SqlSession, 并执行映射的SQL语句.SqlSessionFactory对象可 ...

  6. Mybatis Generator配置文件完整配置详解

    完整的Mybatis Generator(简称MBG)的最完整配置文件,带详解,再也不用去看EN的User Guide了 可以搭配着mybatis generator的中文文档看:http://mbg ...

  7. 深入浅出Mybatis系列(四)---配置详解之typeAliases别名(mybatis源码篇)

    上篇文章<深入浅出Mybatis系列(三)---配置详解之properties与environments(mybatis源码篇)> 介绍了properties与environments, ...

  8. 太阳动态ip代理为您详解使用代理ip常见的几个关键点及其解决方案

    一个ip支撑不了整个爬虫项目的运营,因此程序员常需要建立代理ip池或者与第三方代理ip软件打交道.作为优质的代理ip服务商,太阳动态ip代理为您详解使用代理ip常见的几个关键点及其解决方案. IP检验 ...

  9. mybatis 配置详解

    mybatis 配置详解 mybatis-config.xml 核心配置文件 mybatis-config.xml 包含的内容如下 configuration(配置) properties(属性) s ...

最新文章

  1. 第4章javascript变量、作用域和内存回收
  2. 从这篇文章可以看出有些错误,由此可以看出,还是看msdn要好的多,这是我的经验
  3. 笔记-中项案例题-2019年下-整体管理
  4. linux孟庆昌第六章课后题_第六章课后练习题答案
  5. python 动态相册_Python编程:制作电子相册
  6. 制作点击文字变颜色_手机照片、视频怎样添加文字?原来很简单,4种方法一分钟搞定...
  7. 从Nginx、Apache工作原理看为什么Nginx比Apache高效!
  8. 【Linux】04 实验笔记
  9. postman工具 如何传递当前时间戳和MD5加密
  10. SpreadJS 2021 V14.1 Crack
  11. 【docx4j】docx4j操作docx,实现替换内容、转换pdf、html等操作
  12. 蛋白质中二硫键特征的质谱分析技术及其应用
  13. paint.net ps证件照背景色
  14. PR常见问题:pr导入素材没有音轨怎么办
  15. 【天怒人怨爸爸系列】一年级数学口算题生成程序
  16. 新手学Python之学习官网教程(五: Data Structures)
  17. 电脑开不了机的原因和解决办法
  18. 商城项目解析(前端页面知识,用户如何访问服务器,hosts的修改,nginx)
  19. oracle cheatsheet,OracleDB Cheatsheet
  20. 银河麒麟系统FT2000 ARM64平台源码编译grub2并制作启动U盘 引导启动长城UF716笔记本

热门文章

  1. Apache Flink,流计算?不仅仅是流计算!
  2. 轻松应对双11,百万级物理和虚拟网络设备的网络智能化实践
  3. 01let和const
  4. lsof查看进程占用文件_Linux 利用lsof命令查找已经删除的文件来释放磁盘空间
  5. echarts 树图样式美化_echarts2 tree树图自定义显示缩放大小、位置
  6. Nacos 集群搭建_01
  7. docker 安装 mysql和Navicat Premium 远程连接
  8. 如何利用tcpdump抓包?
  9. SpringBoot入门到精通_第4篇 _开发三板斧
  10. Linux环境安装并配置Maven