import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
private String tableName;
public void setTableName(String tableName) {
this.tableName = tableName;
}
@Override
public void insertFill(MetaObject metaObject) {
// This method is not needed for our use case, you can leave it empty
}
@Override
public void updateFill(MetaObject metaObject) {
// This method is not needed for our use case, you can leave it empty
}
public String getTableName() {
return tableName;
}
}
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
@Component
public class MyScheduledTask {
private final MyAppProperties myAppProperties;
private final MyMetaObjectHandler metaObjectHandler;
private final JdbcTemplate jdbcTemplate;
@Autowired
public MyScheduledTask(MyAppProperties myAppProperties, MyMetaObjectHandler metaObjectHandler, JdbcTemplate jdbcTemplate) {
this.myAppProperties = myAppProperties;
this.metaObjectHandler = metaObjectHandler;
this.jdbcTemplate = jdbcTemplate;
}
@Scheduled(fixedRate = 60000) // Executes every 60 seconds
public void deleteDataFromTables() {
List<String> tableNames = myAppProperties.getTableNames();
for (String tableName : tableNames) {
deleteDataFromTable(tableName);
}
}
private void deleteDataFromTable(String tableName) {
// Set the current table name in the MetaObjectHandler
metaObjectHandler.setTableName(tableName);
// Get the entity class based on the table name
Class<?> entityClass = GlobalConfigUtils.getTableNameToClassMap().get(tableName);
if (entityClass == null) {
System.err.println("Entity class not found for table: " + tableName);
return;
}
// Perform the data deletion
// Here, you can use the entityClass to perform any specific operations
int deletedRows = jdbcTemplate.update("DELETE FROM " + tableName + " WHERE ...");
System.out.println(deletedRows + " rows deleted from table " + tableName + ".");
}
}