Mybatis语句转为正常sql语句小工具

一、前提背景

        实习的公司在做一个商业BI,甩给我一个需求,需要我支持mybatis语句输入。由于不敢大改前人的代码,只能自己在网上寻找解决方法。

        一开始找到的是abel533大佬的SqlMapper工具Mybatis_Utils: Mybatis相关工具类 - Gitee.com

但是它固定了返回类是一个List<T>,和源代码获取ResultSet类相差甚远,然后我就根据网上的方法和gpt自己摸索出来。

二、mybatis的解析和运行原理

  1. 创建SqlSessionFactory
  2. 通过SqlSessionFactory创建SqlSession
  3. 通过sqlsession执行数据库操作
  4. 调用session.commit()提交事务
  5. 调用session.close()关闭会话

        

       

        由于我的目的是转换成正常sql语句再接入到源代码里面执行,所以只需要进行到第二步创建sqlSession即可。

        原本Mybatis 读取XML配置文件后会将内容放在一个Configuration类中,Configuration类会存在整个Mybatis生命周期,以便重复读取。SqlSessionFactoryBuilder会读取Configuration类中信息创建SqlSessionFactory。

        但是我现在没有固定的XML文件,并且需要连接多个数据源,后端能获取到的就是jdbc连接。

        查询资料后,发现只要能先获取jdbc连接的connection,就可以获取url、driverName、ClientInfo构造PoolDataSource连接池,再构造Environment -> Configuration,最后构造SqlSessionFactory。

        再看abel533的SqlMapper工具解析

        接下来就是SqlSessionFacto

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值