Java-SQL获取执行语句并将实际参数替换占位符

Java-SQL获取执行语句并将实际参数替换占位符

1.引入工具包

<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.7</version>
</dependency>

2.引入内存镜像

import org.apache.ibatis.session.SqlSessionFactory;

@Autowired
SqlSessionFactory sqlSessionFactory;

3.获取并转换

//获取执行语句语句
MyBatisSql myBatisSql = MyBatisSqlUtils.getMyBatisSql("com.ruoyi.business.mapper.IZlxxMapper.updateXW", DataLogUtil.objectToMap(map), sqlSessionFactory);
String specialSql = String.valueOf(myBatisSql);
//转换语句
String changeSql = DataLogUtil.changeSql(specialSql);
//添加日志记录
DataLogUtil.addDataLog(tZlxxEntity.getZlNo(), 1, tZlxxEntity.getItm().toString(), "指令管理-箱位修改-zlxxEdit", changeSql, tZlxxEntity.getCzNo());
DataLogUtil.addChgData("ZE", tZlxxEntity.getTdNo(), tZlxxEntity.getBoxNo(), tZlxxEntity.getZlNo()+":"+UUID.randomUUID().toString().toUpperCase(), 1, 1, null, "指令管理-箱位修改-zlxxEdit", "xw:" + tZlxxEntity.getXw(), map.toString(), SecurityUtils.getUsr(), SecurityUtils.getCompno());
DataLogUtil.addPerformSQLStoredProcedure(tZlxxEntity.getZlNo(), 1, tZlxxEntity.getItm().toString(), "指令管理-箱位修改-zlxxEdit", changeSql, tZlxxEntity.getCzNo());

4.DataLogUtil.java

import cn.hutool.core.util.ReUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.ruoyi.business.domain.entity.TDataTbNewWithBLOBsEntity;
import com.ruoyi.business.domain.vo.ChgData;
import com.ruoyi.business.service.dataLog.IChgDataService;
import com.ruoyi.business.service.dataLog.ITDataTbNewService;
import com.ruoyi.common.utils.ValueUtil;
import com.ruoyi.common.utils.uuid.UUID;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

//同步sql记录
@Component
public class DataLogUtil {

    @Autowired
    private ITDataTbNewService itDataTbNewService;
    @Autowired
    private IChgDataService iChgDataService;

    public static DataLogUtil dataLogUtil;

    @PostConstruct
    public void init(){
        dataLogUtil = this;
        dataLogUtil.itDataTbNewService = this.itDataTbNewService;
        dataLogUtil.iChgDataService = this.iChgDataService;
    }

    /**
     *
     * @param bilNo 同步表主键
     * @param bilNo1 同步表主键
     * @param bilTable 操作表名或方法说明
     * @param specialSql 同步语句
     * @param czNo 站点号
     * @return
     */
    public static Boolean addDataLog(String bilNo,Integer bilItm, String bilNo1, String bilTable, String specialSql, String czNo){
        try {
            TDataTbNewWithBLOBsEntity tDataTbNewWithBLOBsEntity = new TDataTbNewWithBLOBsEntity();
            SimpleDateFormat sdf = new SimpleDateFormat("YYYYMMddHHmmssSSS");
            tDataTbNewWithBLOBsEntity.setBilNo("BS"+sdf.format(new Date()));
            tDataTbNewWithBLOBsEntity.setBilItm(bilItm==null?1:bilItm);
            String bil = "";
            if(bilNo != null ){
                bil = bilNo;
            }
            if(bilNo1 != null && !"null".equals(bilNo1) && !"NULL".equals(bilNo1)){
                if(bil.trim().length() > 0){
                    bil =  bil +"/"+bilNo1;
                }else{
                    bil =  bilNo1;
                }
            }
            tDataTbNewWithBLOBsEntity.setBilNo1(bil);
            if(ValueUtil.stringOfNullAndEmpty(bilTable)){
                tDataTbNewWithBLOBsEntity.setBilTable("");
            }else {
                tDataTbNewWithBLOBsEntity.setBilTable(bilTable);
            }
            if(ValueUtil.stringOfNullAndEmpty(specialSql)){
                tDataTbNewWithBLOBsEntity.setSpecialSql("");
            }else {
                tDataTbNewWithBLOBsEntity.setSpecialSql(specialSql);
            }
            if(ValueUtil.stringOfNullAndEmpty(czNo)){
                tDataTbNewWithBLOBsEntity.setCzNo("");
            }else {
                tDataTbNewWithBLOBsEntity.setCzNo(czNo);
            }

            return dataLogUtil.itDataTbNewService.add1(tDataTbNewWithBLOBsEntity);
        }catch (Exception e) {
            e.getMessage();
            return false;
        }
    }
    
    /**
     * @param bilId
     * @param tdNo
     * @param boxNo
     * @param bilNo
     * @param preItm
     * @param itm
     * @param fldNo
     * @param fldName
     * @param oldvalue
     * @param newvalue
     * @param usr
     * @param compno
     * @return
     */
    public static Boolean addChgData(String bilId,String tdNo, String boxNo, String bilNo, Integer preItm, Integer itm, String fldNo,String fldName,String oldvalue,String newvalue,String usr,String compno){
        try {
            ChgData chgData = new ChgData();
            chgData.setBIL_ID(bilId);
            if(ValueUtil.stringOfNullAndEmpty(tdNo)){
                chgData.setTD_NO("");
            }else{
                chgData.setTD_NO(tdNo);
            }
            if(ValueUtil.stringOfNullAndEmpty(boxNo)){
                chgData.setBOX_NO("");
            }else{
                chgData.setBOX_NO(boxNo);
            }
            if(ValueUtil.stringOfNullAndEmpty(bilNo)){
                chgData.setBIL_NO(UUID.randomUUID().toString().toUpperCase());
            }else{
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

自由的风~~

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

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

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

打赏作者

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

抵扣说明:

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

余额充值