@Component
public class TimingListener {
@Scheduled(cron = "0 0 1 1 * ?")
public void createMonthTable(){
LocalDate date = LocalDate.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM");
String tableName = date.format(formatter).replace("-","");
try{
bdcardStatisticService.createBdcardTable("t_bus_bdcard_statistic_"+tableName);
}catch (Exception e){
e.printStackTrace();
}
}
public void createBdcardTable(String tableName ){
String sequence = tableName+"_id_seq";
try{
bdcardStatisticMapper.addSequence(tableName);
}catch(Exception e){}
try{
bdcardStatisticMapper.createTable(tableName,sequence);
}catch(Exception e){}
}
<insert id = "addSequence">
CREATE SEQUENCE ${tableName}_id_seq
INCREMENT BY 1
START WITH 1
CACHE 1
</insert>
<insert id ="createTable">
CREATE TABLE ${tableName} (
"id" int4 NOT NULL DEFAULT nextval('${sequence}'::regclass),
"bd_card" varchar(255) COLLATE "pg_catalog"."default",
"fence_num" int4 DEFAULT 0,
"sos_num" int4 DEFAULT 0,
"location_num" int4 DEFAULT 0,
"commun_num" int4 DEFAULT 0,
"create_time" timestamp(6) DEFAULT CURRENT_TIMESTAMP,
"organ_id" int4,
"bdcard_owner_id" int4,
"overseas" int2 DEFAULT 0,
"overclocking" int2 DEFAULT 0,
"overtime" int2 DEFAULT 0,
"multipurpose" int2 DEFAULT 0
)
</insert>