获取Mybatis中的sql

项目中需要获取mapper中的sql语句,方便Influxdb使用,分有参数和无参数

1、有参数

复制代码
    public static String getSql(String id, Object parameterObject){
        String sql = factory.getConfiguration().getMappedStatement(id).getBoundSql(parameterObject).getSql();
        List<ParameterMapping> parameterMappings = factory.getConfiguration().getMappedStatement(id).getSqlSource().getBoundSql(parameterObject).getParameterMappings();
        String val = null;
        for(ParameterMapping mapping : parameterMappings){
            try {
                val = BeanUtils.getProperty(parameterObject, mapping.getProperty());
            } catch (Exception e) {
                e.printStackTrace();
            }
            sql = sql.replaceFirst("\\?", val);
            log.debug("mapping: {}  pro: {}  val:{}", mapping, mapping.getProperty(), val);
        }
        return sql;
复制代码

2、无参数

    public static String getSql(String id){
        String sql = factory.getConfiguration().getMappedStatement(id).getBoundSql(null).getSql();
        return sql;
    }

 

posted @   烤乳鸽  阅读(384)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示