一,业务背景
业务上要求存储数据的时候根据某个字段动态的选择数据要存储的表.
如根据code字段: code->[1001,1002]来进行选择存储的表:
经过下面的配置实现动态表名如 --> table1_1001,table_1002的效果.以此动态生成表名的效果.
二,解决方案
使用mybatis-plus中的动态表名插件,而且版本必须是3.1.2以上版本。
需求,将数据按照月份放在不同的表中,2022年1月份数据放在monitor_accelerometer_rapid202201表中,2022年2月份数据放在monitor_accelerometer_rapid202202表中,通常这种需求还伴随定时任务建表需求。
1,准备工作
说明:表是真实存在,且要动态替换的新表必须与实体类表结构一样,
@Data
@TableName("monitor_accelerometer_rapid202201")
public class SensorValue implements Serializable {
private static final long serialVersionUID = 5892027263270309341L;
@TableId(value = "id",type = IdType.AUTO)
private Integer id;
private Integer pointId;
private Integer equipmentId;
private String sensorNo;
@TableField(value = "create_time",fill = FieldFill.INSERT)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private Date createTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private Date sensorTime;
private String sensorValueJson;
}
2,在mybatis-plus配置的分页插件中添加如下代码
配置好插件后,并不会影响其他分页功能的使用
@Configuration
public class MybatisPlusConfig {
//分页插件总添加动态表名插件
@Bean