Java新增语句,捕获异常sql语句,解析 insert into 语句,insert转map

1、新增demo案例

/**
     * 新增物料信息
     * @param _in
     * @return
     */
    public EiInfo insert(EiInfo _in) {
        try {
            _in = super.insert(_in);
        } catch (Exception e) {
            String message = e.getMessage();
            if (message.contains("违反唯一约束条件") && (message.contains("MAT_CODE_UN") || message.contains("MAT_CNAME_UN"))) {
                // 获取异常中的 sql 语句
                String sql = CPUtil.toStr(e.getCause().getCause().getCause().toString().split("OriginalSql =")[1]);
                Map<String, String> map = this.insertMap(sql);
                // 前提数据库表中,新建约束唯一键(MAT_CODE_UN)
                if (message.contains("MAT_CODE_UN")) {
                    message = "该物料代码【" + map.get("MAT_CODE") + "】已经有配置,不可以重复添加!";
                } else if (message.contains("MAT_CNAME_UN")) {
                    message = "该物料名称【" + map.get("MAT_CNAME") + "】已经有配置,不可以重复添加!";
                }
                log.error(sql);
                log.error(message + map.get("tableName"));
            }
            _in.setMsg(message);
            _in.setStatus(EiConstant.STATUS_FAILURE);
        }
        return (_in);
    }

2、解析 insert 语句

 /**
     * 解析 insert 语句
     * @param sql
     * @return {Map}
     */
    public static Map<String,String> insertMap(String sql){
        Map<String,String> data = new HashMap<>();
        try {
            String tableName = CPUtil.toStr(sql.substring(sql.indexOf(".") + 1, sql.indexOf("(")));
            data.put("tableName", tableName);
            String name = sql.split("VALUES")[0];
            String value = sql.split("VALUES")[1];
            String[] namelist = CPUtil.toStr(name.substring(name.indexOf("(") + 1, name.indexOf(")"))).split(",");
            String[] valuelist = CPUtil.toStr(value.substring(value.indexOf("(") + 1, value.indexOf(")"))).split(",");
            for (int i = 0; i < namelist.length; i++) {
                data.put(CPUtil.toStr(namelist[i].replaceAll(" ","")), CPUtil.toStr(valuelist[i].replaceAll(" ","")));
            }
        }catch (Exception e){
            System.err.println(e.getMessage());
        }
        return data;
    }

3、新增sql语句

String sql = "insert into AGJH.MS_TYLFZ01 (MODIFIER , WORKFLOW_NAME , MODIFIERDISPLAY , TOC , DATAGROUP , MUUID , CREATER , MAT_CODE , WORKFLOW_NODE , MAT_CNAME , TOM , WORKFLOW_ID , TIMESTAMP , TYPE , CREATERDISPLAY ) VALUES (  17883102  ,     ,  鞍钢质计组1  ,  2021-12-25 16:11:25  ,     ,  4510219a130b4153bda570079e301adc  ,  17883102  ,  A0000258  ,     ,  介休义棠瘦焦煤  ,  2021-12-25 16:11:25  ,     ,  1640419885752  ,  矿  ,  鞍钢质计组1  )";

4、前提条件

Java新增语句,捕获异常sql语句,解析 insert into 语句,insert转map

© 版权声明

相关文章

暂无评论

none
暂无评论...