CCJSqlParserUtil处理语句

public class SqlConvertToKeyValue {


    static Map<String, String> parseInsert(String insertSql) {
        Statement statement = null;
        try {
            statement = CCJSqlParserUtil.parse(insertSql);
        } catch (JSQLParserException e) {
            throw new RuntimeException("insert sql展示错误");
        }
        Insert insert = (Insert)statement;
        Map<String, String> keyValuePairs = new HashMap<>();
        // 获取表名
        String tableName = new TablesNamesFinder().getTableList(insert).get(0);

        // 获取列名和值
        List<Column> columnExpressions = insert.getColumns();
        ExpressionList<?> valueExpressions = insert.getValues().getExpressions();
        if(columnExpressions == null || valueExpressions ==null || valueExpressions.size()!=columnExpressions.size()){
            throw new RuntimeException("处理插入时候,出现了空值");
        }

        for (int i = 0; i < columnExpressions.size(); i++) {
            Column column = (Column) columnExpressions.get(i);
            Expression value = valueExpressions.get(i);

            // 假设 value 是一个简单的值
            String columnName = column.getColumnName().trim();
            String columnValue = value.toString().trim();

            keyValuePairs.put(columnName, columnValue);
        }
        return keyValuePairs;
    }

    static Map<String, String> parseUpdate(String updateSql) {

        Statement statement = null;
        try {
            statement = CCJSqlParserUtil.parse(updateSql);
        } catch (JSQLParserException e) {
            throw new RuntimeException("update sql展示错误");
        }
        Update update = (Update)statement;
        HashMap<String, String> keyValuePairs = new HashMap<>();
        //获取set语句
        List<UpdateSet> updateSets = update.getUpdateSets();
        for (UpdateSet updateSet : updateSets) {
            ExpressionList<Column> columns = updateSet.getColumns();
            ExpressionList<?> values = updateSet.getValues();
            keyValuePairs.put(columns.get(0).toString().trim(), values.get(0).toString().trim());
        }

        Expression whereExpression = update.getWhere();
        String[] split = whereExpression.toString().split("=");
        keyValuePairs.put(split[0].trim(),split[1].trim());
        return keyValuePairs;

    }

    static Map<String,String> parseDelete(String deleteSql) {
        HashMap<String, String> keyValuePairs = new HashMap<>();
        Statement statement = null;
        try {
            statement = CCJSqlParserUtil.parse(deleteSql);
        } catch (JSQLParserException e) {
            throw new RuntimeException("delete sql转换错误");
        }
        Delete delete = (Delete)statement;
        // 获取 DELETE 语句中的条件
        Expression condition = delete.getWhere();
        // 假设条件是简单的 id = 1
        String[] split = condition.toString().split("=");
        keyValuePairs.put(split[0].trim(),split[1].trim());
        return keyValuePairs;
    }

    public static void main(String[] args) {
        String sql = "INSERT INTO `eshop_order` (`id`,`order_no`,`order_name`,`request_no`,`user_uid`,`user_cn`,`user_mobile`,`employee_number`,`shop_id`,`shop_code`,`shop_type`,`shop_name`,`market_type`,`agmtgroup_code`,`ou`,`org_full_name`,`province_ou`,`province_name`,`province_num`,`city_ou`,`city_name`,`order_type`,`pay_type`,`status`,`approve_status`,`audit_start_time`,`audit_endtime`,`completion_time`,`pay_status`,`order_time`,`pay_time`,`notice_status`,`notice_uid`,`notice_time`,`provider_id`,`provider_code`,`provider_name`,`contact_id`,`contact_number`,`contact_name`,`contact_class`,`inquiry_no`,`distribution_time`,`distribution`,`distribution_status`,`accept_type`,`accept_uid`,`accept_org_id`,`accept_org_name`,`accept_id_card`,`accept_city_ou`,`accept_city_ou_name`,`accept_reason`,`accept_name`,`telephone`,`mobile`,`receipt_status`,`accept_time`,`payable_amount`,`real_amount`,`order_total_amount`,`sell_amount`,`tax_amount`,`region_fare_amount`,`fare_status`,`fare_amount`,`fare_all_amount`,`draw_back`,`back_note`,`bill_status`,`input_time`,`pending_code`,`is_vmi`,`is_mobile`,`is_provider`,`is_sub_company`,`sub_company_id`,`real_sub_company_id`,`sub_company_name`,`is_grandson`,`is_storage`,`depot_id`,`depot_name`,`budget_packet_id`,`budget_flag`,`is_check_statusin_budget`,`confirm`,`is_device`,`is_import_settle`,`is_to_platform`,`is_comment`,`balance_tax`,`invoice_type`,`is_sap`,`can_adjust`,`open_and_check_in`,`supply_use_status`,`is_portion`,`is_jd_split`,`jd_demand_order`,`jd_parent_order_id`,`split_time`,`second_ou`,`second_name`,`ou_path`,`ou_name_path`,`org_name`,`system_id`,`system_name`,`postscript`,`note`,`deal_by`,`is_in_store`,`pur_po_number`,`major_code`,`major_name`,`major_approve_status`,`major_approve_user_uid`,`major_approve_user_name`,`major_is_audit`,`cutover_status`,`order_reserved1`,`order_reserved2`,`order_reserved3`,`order_reserved4`,`order_reserved5`,`order_reserved6`,`order_reserved7`,`order_reserved8`,`order_reserved9`,`order_reserved10`,`order_reserved11`,`order_reserved12`,`order_reserved13`,`order_reserved14`,`order_reserved15`,`order_reserved16`,`order_reserved17`,`order_reserved18`,`order_reserved19`,`order_reserved20`,`create_date`,`create_by`,`update_date`,`update_by`,`delete_flag`,`versions`,`tenant_id`,`last_update_time`) VALUES ('1387298236979666946','PO-he-20210428000001','看看这个更新订单的时间对不对','PR-he-20210428000001','caoyong10','曹勇','','','','',null,'','provmajor','default','00130030305','河北省分公司物资采购与管理部','0013','河北省分公司','13','001300','河北省分公司管理部门','0','0','4','0','2021-04-29 16:02:45',null,null,'0','2021-04-28 14:50:48',null,'0',null,null,'203671','100005426','中徽建技术有限公司','2876970100000019286','CU12-1301-2021-000084','2021-2022年河北联通通信设备安装工程施工服务采购项目施工框架协议-中徽建','001','',null,null,'0',null,'','','','',null,null,null,'存量客户经营中心','','18631110727','0',null,'10.90','0.00','0.00','10.90','0.90','0.00','0','0.00','0.00','0.00',null,'0',null,null,'0','0','1','0','',null,'','0','0','-1',null,null,'1','0','0','0','0','1','0',null,'1','0','0','0','0','0','0',null,null,null,'00130030305','河北省分公司物资采购与管理部','/0000/0013/001300/00130030305','/中国联通/河北省分公司/河北省分公司管理部门/河北省分公司物资采购与管理部','121301_OU_运营河北省本部','EMS','内部商城','test',null,null,'1',null,null,null,null,null,null,null,'1',null,null,'0',null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,'2021-04-28 14:50:49','caoyong10','2021-04-28 14:50:51','caoyong10','deleted','1','unicom','2023-02-25 00:26:25');";
        System.out.println(sql.contains("eshop_order"));
        Map<String, String> stringStringMap = parseInsert(sql);
        System.out.println(stringStringMap);
        String s = stringStringMap.get("`id`");
        System.out.println(s);


        String updateSql ="UPDATE `eshop_order` SET`id`='1387298236979666946',`order_no`='PO-he-20210428000001',`order_name`='看看这个更新订单的时间对不对',`request_no`='PR-he-20210428000001',`user_uid`='caoyong10',`user_cn`='曹勇',`user_mobile`='',`employee_number`='',`shop_id`='',`shop_code`='',`shop_type`=null,`shop_name`='',`market_type`='provmajor',`agmtgroup_code`='default',`ou`='00130030305',`org_full_name`='河北省分公司物资采购与管理部',`province_ou`='0013',`province_name`='河北省分公司',`province_num`='13',`city_ou`='001300',`city_name`='河北省分公司管理部门',`order_type`='0',`pay_type`='0',`status`='4',`approve_status`='0',`audit_start_time`='2021-04-29 16:02:45',`audit_endtime`=null,`completion_time`=null,`pay_status`='0',`order_time`='2021-04-28 14:50:48',`pay_time`=null,`notice_status`='0',`notice_uid`=null,`notice_time`=null,`provider_id`='203671',`provider_code`='100005426',`provider_name`='中徽建技术有限公司',`contact_id`='2876970100000019286',`contact_number`='CU12-1301-2021-000084',`contact_name`='2021-2022年河北联通通信设备安装工程施工服务采购项目施工框架协议-中徽建',`contact_class`='001',`inquiry_no`='',`distribution_time`=null,`distribution`=null,`distribution_status`='0',`accept_type`=null,`accept_uid`='',`accept_org_id`='',`accept_org_name`='',`accept_id_card`='',`accept_city_ou`=null,`accept_city_ou_name`=null,`accept_reason`=null,`accept_name`='存量客户经营中心',`telephone`='',`mobile`='18631110727',`receipt_status`='0',`accept_time`=null,`payable_amount`='10.90',`real_amount`='0.00',`order_total_amount`='0.00',`sell_amount`='10.90',`tax_amount`='0.90',`region_fare_amount`='0.00',`fare_status`='0',`fare_amount`='0.00',`fare_all_amount`='0.00',`draw_back`='0.00',`back_note`=null,`bill_status`='0',`input_time`=null,`pending_code`=null,`is_vmi`='0',`is_mobile`='0',`is_provider`='1',`is_sub_company`='0',`sub_company_id`='',`real_sub_company_id`=null,`sub_company_name`='',`is_grandson`='0',`is_storage`='0',`depot_id`='-1',`depot_name`=null,`budget_packet_id`=null,`budget_flag`='1',`is_check_statusin_budget`='0',`confirm`='0',`is_device`='0',`is_import_settle`='0',`is_to_platform`='1',`is_comment`='0',`balance_tax`=null,`invoice_type`='1',`is_sap`='0',`can_adjust`='0',`open_and_check_in`='0',`supply_use_status`='0',`is_portion`='0',`is_jd_split`='0',`jd_demand_order`=null,`jd_parent_order_id`=null,`split_time`=null,`second_ou`='00130030305',`second_name`='河北省分公司物资采购与管理部',`ou_path`='/0000/0013/001300/00130030305',`ou_name_path`='/中国联通/河北省分公司/河北省分公司管理部门/河北省分公司物资采购与管理部',`org_name`='121301_OU_运营河北省本部',`system_id`='EMS',`system_name`='内部商城',`postscript`='test',`note`=null,`deal_by`=null,`is_in_store`='1',`pur_po_number`=null,`major_code`=null,`major_name`=null,`major_approve_status`=null,`major_approve_user_uid`=null,`major_approve_user_name`=null,`major_is_audit`=null,`cutover_status`='1',`order_reserved1`=null,`order_reserved2`=null,`order_reserved3`='0',`order_reserved4`=null,`order_reserved5`=null,`order_reserved6`=null,`order_reserved7`=null,`order_reserved8`=null,`order_reserved9`=null,`order_reserved10`=null,`order_reserved11`=null,`order_reserved12`=null,`order_reserved13`=null,`order_reserved14`=null,`order_reserved15`=null,`order_reserved16`=null,`order_reserved17`=null,`order_reserved18`=null,`order_reserved19`=null,`order_reserved20`=null,`create_date`='2021-04-28 14:50:49',`create_by`='caoyong10',`update_date`='2021-04-28 14:50:51',`update_by`='caoyong10',`delete_flag`='deleted',`versions`='1',`tenant_id`='unicom',`last_update_time`='2023-02-25 00:26:25' where `id`='1387298236979666946';";
        Map<String, String> stringStringMap1 = parseUpdate(updateSql);
        System.out.println(stringStringMap1);
        String s1 = stringStringMap1.get("`id`");
        System.out.println(s1);

        String deleteSql ="delete from `eshop_order` where `id`='1387298236979666946';";
        Map<String, String> Map2 = parseDelete(deleteSql);
        System.out.println(Map2);
        System.out.println(Map2.get("`id`"));


    }
}

需要的jar包

 <dependency>
            <groupId>com.github.jsqlparser</groupId>
            <artifactId>jsqlparser</artifactId>
            <version>4.9</version>
        </dependency>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白鼠666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值