소스 검색

fix #3390 SqlRunner.selectPage()方法未释放连接

zefeng_java 4 년 전
부모
커밋
acf77af99c
1개의 변경된 파일7개의 추가작업 그리고 2개의 파일을 삭제
  1. 7 2
      mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/toolkit/SqlRunner.java

+ 7 - 2
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/toolkit/SqlRunner.java

@@ -121,7 +121,7 @@ public class SqlRunner implements ISqlRunner {
      * @param args 仅支持String
      * @return ignore
      */
-    private Map<String, Object> sqlMap(String sql, IPage page, Object... args) {
+    private Map<String, Object> sqlMap(String sql, IPage<?> page, Object... args) {
         Map<String, Object> sqlMap = CollectionUtils.newHashMapWithExpectedSize(2);
         sqlMap.put(PAGE, page);
         sqlMap.put(SQL, StringUtils.sqlArgsFill(sql, args));
@@ -208,7 +208,12 @@ public class SqlRunner implements ISqlRunner {
         if (null == page) {
             return null;
         }
-        page.setRecords(sqlSession().selectList(SELECT_LIST, sqlMap(sql, page, args)));
+        SqlSession sqlSession = sqlSession();
+        try {
+            page.setRecords(sqlSession.selectList(SELECT_LIST, sqlMap(sql, page, args)));
+        } finally {
+            closeSqlSession(sqlSession);
+        }
         return page;
     }