在工作中遇到数据库表名会根据月份变化的情况,比如3月生成的表叫detail_201803,4月生成的表叫detail_201804,以此类推。每个表结构相同。就希望通过使用hibernate中的NameStrategy来实现动态表名。
主要参考文章:https://blog.csdn.net/lmy86263/article/details/52640764
https://blog.csdn.net/meng2602956882/article/details/22914493
其中,我的hibernate配置是写在xml文件中而不是注释中的,跟网上已有的都不同,所以在这里记录一下。
1. 第一步先编写一个自己的NameStrategy,代码如下:
package edu.sjtu.utils;
import org.hibernate.cfg.DefaultNamingStrategy;
import org.hibernate.cfg.ImprovedNamingStrategy;
import org.hibernate.util.StringHelper;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
public class MyNameStrategy extends ImprovedNamingStrategy {
@Override
public String classToTableName(String className) {
String tableName;