SqlSession 需要关闭,建议使用 SqlSessionManager,可以不用手动关闭 SqlSession。


On 2023/07/18 02:13:16 lxk wrote:
> 在flink内需要使用mybatis做些简化查询的工作,目前我的使用方式如下
> 
> public class MybatisUtil {
> 
> private static final Logger LOGGER = 
> LogFactory.createNewLogger("MybatisUtil");
>     private static ThreadLocal<SqlSession> tl = new ThreadLocal<SqlSession>();
>     private static SqlSessionFactory factory = null;
> //    private static  SqlSession sqlSession = null;
> static {
> // 1 读取配置文件 config.xml
> InputStream in = null;
>         try {
> in = Resources.getResourceAsStream("batis.xml");
> } catch (IOException e) {
> // TODO Auto-generated catch block
> e.printStackTrace();
>             throw new RuntimeException(e);
> }
> // 2 创建SqlSessionFactory
> factory = new SqlSessionFactoryBuilder().build(in);
> }
> 
> 
> 
> public static SqlSession getSqlSession(){
> SqlSession sqlSession = tl.get();
>         if(sqlSession == null){
> sqlSession = factory.openSession();
> tl.set(sqlSession);
> LOGGER.info("sqlSession创建成功,连接为:{},时间为:{}", sqlSession,LocalTimeUtil.now());
> }
> return sqlSession;
> }
> 
> 
> }
> 以上是工具类
> 我在open方法中获取sqlsession,然后在invoke方法中使用mapper
> public void open(Configuration parameters) throws Exception {
> sqlSession = MybatisUtil.getSqlSession();
> }
> 
> public List<SaleSource> map(HeaderFullWithPreOrder headerFullWithPreOrder) 
> throws Exception {
> SelectAddCartMapper mapper = sqlSession.getMapper(SelectAddCartMapper.class);
> .......其他省略....
> }
> 
> 想问下这种方式使用是否正确。以及sqlsession是否需要关闭,看见相关帖子有说如果sqlsession不关闭的话会把连接打满
> 

Reply via email to