最近接了一个紧急的需求要求给出Oracle表名称生成指定触发器和触发器对应的表,几乎是万能的,就是不支持表中有long类型的数表,因为时间紧而且是工具性质就没有太多注意代码规范请见谅
@RestController
@RequestMapping("/create")
public class CreateTriggerController {
@Autowired
BocService bocService;
private static Logger logger = LoggerFactory.getLogger(CreateTriggerController.class);
@GetMapping("/Trigger")
@ResponseBody
public String CreateTrigger(String tableName) throws IOException, SQLException {
String trigger = bocService.createTrigger(tableName);
return JSON.toJSONString(trigger);
}
}插入代码片
@Service
public class BocService {
private static Logger logger = LoggerFactory.getLogger(BocService.class);
@Autowired
QueryCreateSqlService queryCreateSqlService;
@Autowired
SqListService sqListService;
public String flag = ""FLAG"" + " VARCHAr2(20)," + ""CREATE_DT"" + " DATE,";
public String createTrigger(String tableName) {
try {
//判断输入是否为空
if (StringUtils.isEmpty(tableName)) {
return ResultEnum.RESUT_TABLENAME_ISNULL.toString();
}
//判断表是否存在
tableName = tableName.toUpperCase();
int num = queryCreateSqlService.isTableExist(tableName);
if (num == 0) {
return ResultEnum.RESUT_TABLE_NOTIS.toString();
}
String tiggerName = "TRI_" + tableName;
//将表名全部转换成大写
//目标表是否已经建立
int tableExist = queryCreateSqlService.isTableExist(tiggerName);
if (tableExist > 0) {
queryCreateSqlService.deleteTable(tiggerName);
queryCreateSqlService.deleteTrigger(tableName + "_A_TIGGER");
logger.info("目标表已创建删除已有目标表和已有的触发器" + "表名:" + tableName + " 触发器:" + tableName + "_A_TIGGER");
}
Map tableNameMap = new HashMap<>();
tableNameMap.put("tableName", tableName);
List
public interface QueryCreateSqlService {
Map qryCreateSqlByName(Map map);
void createTiggerTable(String createTableSql);
List qryColumns(@Param("tableName")String tableName);
void createTigger(@Param("createTriggerSql")String createTriggerSql);
void deleteTable(@Param("tableName") String tableName);
int isTableExist(@Param("tableName") String tableName);
void deleteTrigger(@Param("trigger") String trigger);
List qryColumnsInfo(@Param("tableName")String tableName);
List> qryColumnsInfomap(@Param("tableNameMap")Map tableNameMap);
}```
```java
@Service
public class QueryCreateSqlServiceImpl implements QueryCreateSqlService {
@Autowired
QueryCreateSqlMapper queryCreateSqlMapper;
@Override
public Map qryCreateSqlByName(Map map) {
return queryCreateSqlMapper.qryCreateSqlByName(map);
}
@Override
public void createTiggerTable(String createTableSql) {
queryCreateSqlMapper.createTiggerTable(createTableSql);
}
@Override
public List qryColumns(String tableName) {
return queryCreateSqlMapper.qryColumns(tableName);
}
@Override
public void createTigger(String createTriggerSql) {
queryCreateSqlMapper.createTigger(createTriggerSql);
}
@Override
public void deleteTable(String tableName) {
queryCreateSqlMapper.deleteTable(tableName);
}
@Override
public int isTableExist(String tableName) {
return queryCreateSqlMapper.isTableExist(tableName);
}
@Override
public void deleteTrigger(String trigger) {
queryCreateSqlMapper.deleteTrigger(trigger);
}
@Override
public List qryColumnsInfo(String tableName) {
return queryCreateSqlMapper.qryColumnsInfo(tableName);
}
@Override
public List> qryColumnsInfomap(Map tableNameMap) {
return queryCreateSqlMapper.qryColumnsInfomap(tableNameMap);
}
@Repository
public interface QueryCreateSqlMapper {
Map qryCreateSqlByName(Map map);
void createTiggerTable(@Param("createTableSql")String createTableSql);
List qryColumns(@Param("tableName")String tableName);
void createTigger(@Param("createTriggerSql")String createTriggerSql);
void deleteTable(@Param("tableName") String tableName);
int isTableExist(@Param("tableName") String tableName);
void deleteTrigger(@Param("trigger") String trigger);
List qryColumnsInfo(@Param("tableName")String tableName);
List> qryColumnsInfomap(@Param("tableNameMap")Map tableNameMap);
}
```xml



