tk.mapper 通用 mapper 动态表名查询

1.在实体上使用@Table 注解 默认不加使用驼峰转下划线匹配

@Table(name="table_name")
public class Entity{

}

2.实现 IDynamicTableName 接口

public class Entity   implements IDynamicTableName{

@Override
public String getDynamicTableName() {

    return “tableName”;
}
}

可以直接添加一个非数据库字段 使用 @Transient 注解  外部直接设置表名

 @Transient
    private String tableName;

@Override
public String getDynamicTableName() {

    return  tableName;
}

IDynamicTableName 源码定义:
/*
  • The MIT License (MIT)
  • Copyright (c) 2014-2017 [email protected]
  • Permission is hereby granted, free of charge, to any person obtaining a copy
  • of this software and associated documentation files (the "Software"), to deal
  • in the Software without restriction, including without limitation the rights
  • to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  • copies of the Software, and to permit persons to whom the Software is
  • furnished to do so, subject to the following conditions:
  • The above copyright notice and this permission notice shall be included in
  • all copies or substantial portions of the Software.
  • THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  • IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  • FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  • AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  • LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  • OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  • THE SOFTWARE.
    */

package tk.mybatis.mapper.entity;

/**

  • 实现动态表名时,实体类需要实现该接口
  • @author liuzh
  • @since 2015-10-28 22:20
    */
    public interface IDynamicTableName {

    /**

    • 获取动态表名 - 只要有返回值,不是null和‘‘,就会用返回值作为表名
    • @return
      */
      String getDynamicTableName();
      }

原文地址:https://blog.51cto.com/5013162/2384719

时间: 2024-07-30 14:18:26

tk.mapper 通用 mapper 动态表名查询的相关文章

关于mysql存储过程创建动态表名及参数处理

转载请注明出处:帘卷西风的专栏(http://blog.csdn.net/ljxfblog) 最近游戏开始第二次内测,开始处理操作日志,最开始把日志放到同一个表里面,发现一天时间,平均100玩家在线,操作记录就超过13万条,决定拆表,按照日期来保存日志,每天的日志存到一个表里面,然后定期把老的数据导出来备份后删掉. 具体思路是写日志的时候,根据当前的时间决定插入到当天的表里面,如表不存在则创建一个新的表,表名里面带上当天的日期.这就涉及到需要在存储过程里面动态创建一个跟日期相关的表.mysql不

hibernate动态表名映射

引自:http://blog.csdn.net/xvshu/article/details/39187779 最近的一个项目有一个需求,有N个考核单位,要对每个考核单位生成一张考核情况表,这样做的目的是横切数据库,这这个需求的实现中,我的组员遇到了一个技术问题,我将我的解决办法和整个思考过程与大家分享, 思路: 用一个配置文件,一个类去映射多个表,(每个表的结构相同).按照平时的做法,有多少个表就要 写多少个配置文件,岂不是很麻烦.怎样才能只写一个配置文件就能达到上述目的呢? 经过研究,发现hi

hibernate动态表名映射--只有想不到,没有做不到

最近的一个项目有一个需求,有N个考核单位,要对每个考核单位生成一张考核情况表,这样做的目的是横切数据库,这这个需求的实现中,我的组员遇到了一个技术问题,我将我的解决办法和整个思考过程与大家分享, 思路: 用一个配置文件,一个类去映射多个表,(每个表的结构相同).按照平时的做法,有多少个表就要 写多少个配置文件,岂不是很麻烦.怎样才能只写一个配置文件就能达到上述目的呢? 经过研究,发现Hibernate中的NamingStrategy可以达到这个目的.它是用来定义表名和列名映射规 则的一个接口.我

mysql 通过事件定时为数据库创建动态表名

#检测事件是否开启 show variables like 'event_scheduler'; #开启事件(最好在my.init设置,因为重启后还会变回默认值OFF) set global event_scheduler = on; #创建事件(从11月24号开始每天执行一次) create EVENT eve_createTable ON SCHEDULE EVERY 1 DAY STARTS '2016-11-24 00:00:00' ON COMPLETION PRESERVE ENAB

mysql 存储过程 动态表名

今天写存储过程时,遇到要将表名最为参数的问题,如果不涉及到游标的话,使用prepare可以解决问题,但是,动态表名要运用在游标中的话,则prepare就得靠边站了. 集众人之智慧,最后,使用临时表解决了问题. 如何在MySQL的存储过程中实现把过程参数用在游标定义的SELECT命令里面作为表名引用 首先,我们来把场景描绘一下,比如下面的例子(当然是无法正确运行的):   CREATE PROCEDURE `proc`(SourceDBName CHAR(50), SourceTableName

mybtis plus 3.2.0 动态表名sql解析器的配置

一.Configuration @Configuration public class MybatisPlusConfiguration { public static ThreadLocal<String> inputTableName = new ThreadLocal<>(); @Bean public PaginationInterceptor paginationInterceptor(){ PaginationInterceptor paginationIntercep

根据表名查询列注释

1 SELECT 2 columnTableName = case when a.colorder=1 then d.name else '' end, --表名 3 columnTableDes = case when a.colorder=1 then isnull(f.value,'') else '' end, --表说明 4 columnNo = a.colorder, --字段序号 5 columnName = a.name, --字段名 6 columnId = case when

sqlserver 动态表名 动态字段名 执行 动态sql

动态语句基本语法: 1 :普通SQL语句可以用exec执行 Select * from tableName exec('select * from tableName') exec sp_executesql N'select * from tableName' -- 请注意字符串前一定要加N 2:字段名,表名,数据库名之类作为变量时,必须用动态 SQL declare @fname varchar(20) set @fname = 'FiledName' Select @fname from

PCB MS SQL 通过表名查询各字段信息和vb.net C# module类代码

正式表:各字段内容获取 DECLARE @tabname VARCHAR(20) SET @tabname = 'ppeflow' SELECT @tabname AS '表名' ,(CASE WHEN T.name = 'varchar' or T.name = 'char' THEN T.name + '(' + CAST(COLUMNPROPERTY(C.id,C.name,'PRECISION') as VARCHAR(20))+ ')' WHEN T.name = 'numeric'