mybatis执行自定义sql

背景

在开发过程中遇到一个需求:希望从数据库中读取预先定义好的sql,根据传参进行参数预处理后执行sql语句。结合项目实际情况我决定使用mybatis执行预定义sql。

实现过程

  • 缓存我们自定义的sql语句

MappedStatement ms = new MappedStatement.Builder(configuration, msId, sqlSource, SqlCommandType.SELECT)
                .resultMaps(new ArrayList<ResultMap>() {
                    {
                        add(new ResultMap.Builder(configuration, "defaultResultMap", resultType, new ArrayList<ResultMapping>(0)).build());
                    }
                })
                .build();
  • 找到我们自定义的sql语句,进行查询
 public List<Map<String, Object>> selectList(String sql, Object value) {
        log.info("selectList sql:{},params:{}", sql, JSONUtil.toJsonStr(value));
        Class<?> parameterType = value != null ? value.getClass() : null;
        String msId = mapperStatementBuilder.selectDynamic(sql, parameterType);
        return sqlSession.selectList(msId, value);
    }

使用说明



 public static void main(String[] args) {


        // 1. 创建SqlSessionFactory 仅作示意,具体情况具体操作
        Configuration configuration = new Configuration();
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);

        RowSqlMapper rowSqlMapper = new RowSqlMapper(sqlSessionFactory.openSession());
        List<Map<String, Object>> maps = rowSqlMapper.selectList("select * from ir_session_param");

        HashMap<String, Object> params = new HashMap<>();
        params.put("id", "111");
        List<Map<String, Object>> maps1 = rowSqlMapper.selectList("<script> select * from temp_table where id = #{id} <if test= \"dept_name != null\">" +
                " and dept_name= #{dept_name} </if> </script>", params);
    }

总结

文章参考 http://blog.csdn.net/isea533/article/details/40044417,感谢大佬的方案。在使用过程中发现问题可以下方评论。如果文章对你有帮助请点赞分享加关注。代码包免费下载

相关推荐

  1. mybatis执行定义sql

    2024-06-06 23:28:06       9 阅读
  2. MyBatis特殊SQL执行

    2024-06-06 23:28:06       15 阅读
  3. MyBatis-Plus实现定义SQL语句的分页查询

    2024-06-06 23:28:06       47 阅读
  4. 第二十七章:mybatis plus 如何定义 SQL 查询条件

    2024-06-06 23:28:06       11 阅读
  5. springboot定义cron定时任务执行

    2024-06-06 23:28:06       38 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-06 23:28:06       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-06 23:28:06       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-06 23:28:06       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-06 23:28:06       20 阅读

热门阅读

  1. LightDB Pro*C SQLDA介绍

    2024-06-06 23:28:06       10 阅读
  2. Unity中的Surface Effector 2D组件

    2024-06-06 23:28:06       10 阅读
  3. 深度学习之指数移动平均模型(EMA)介绍

    2024-06-06 23:28:06       10 阅读
  4. 遥感图像的深度学习的任务类型

    2024-06-06 23:28:06       10 阅读
  5. 浏览器内置对象 window 用法集锦,看这篇就够了

    2024-06-06 23:28:06       9 阅读
  6. 【POSIX】消息类的格式与使用

    2024-06-06 23:28:06       9 阅读
  7. vue 常用的 UI 框架及表格

    2024-06-06 23:28:06       17 阅读