SqlSessionFactory工厂类可以从xml文件实现,也可以通过spring来注入,本章用了第二种方法;
@Service public class TEventProcessLogServiceImpl{ @Autowired private SqlSessionFactory sqlSessionFactory; /** * 获取执行SQL * @param mapClass Mapper对应class 主要获取xml文件中的namespace * @param mapId Mapper对应ID 例: <insert id="insertTEventGood" * @param entity 传入参数 * @return */ public String getSql(Class mapClass,String mapId,Object entity) { StringBuilder result=new StringBuilder(); String mapUrl=mapClass.getName()+"."+mapId;//地址 BoundSql boundSql=sqlSessionFactory.getConfiguration() .getMappedStatement(mapUrl).getBoundSql(entity); String sql=boundSql.getSql().replaceAll("(\\r\\n|\\n|\\n\\r| {3,})","");//SQL String paramet=new Gson().toJson(boundSql.getParameterObject());//参数 result.append(mapUrl).append(":").append(sql).append(";"). append("paramet:").append(paramet).append(";"); return result.toString(); } }调用方法
@Autowired private TEventGoodMapper tEventGoodMapper; //这里是调用了一个SQL插入语句 tEventGoodMapper.insertTEventGood(tEventGood); sqlStr.append(itEventProcessLogService.getSql(TEventGoodMapper.class,"insertTEventGood",tEventGood));