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不关闭的话会把连接打满 >