gpt4 book ai didi

java - 为什么 MyBatis 在执行每条语句后都会关闭 session ?

转载 作者:太空宇宙 更新时间:2023-11-04 08:20:42 24 4
gpt4 key购买 nike

我在 Spring 3 上使用 MyBatis。现在我尝试执行以下两个查询,

SELECT SQL_CALC_FOUND_ROWS() * 
FROM media m, contract_url_${contract_id} c
WHERE m.media_id = c.media_id AND
m.media_id = ${media_id}
LIMIT ${offset}, ${limit}

SELECT FOUND_ROWS()

这样我就可以检索第一个查询的总行数,而无需另外执行 count(*)。

然而,第二个总是返回1,所以我打开日志,发现SqlSessionDaoSupport类为第一个查询打开一个连接,然后(愚蠢地)关闭它,并为第二个查询打开一个新连接。

我该如何解决这个问题?

最佳答案

我不确定我的答案是否100%准确,因为我没有使用MyBatis的经验,但听起来你的问题与这个框架并不完全相关。

一般来说,如果您没有以某种方式指定事务边界,则对 Spring ORM 或 JDBC api 的每次调用都将在从 dataSource/connectionPool 检索到的连接中执行。

您可以使用事务来确保保持相同的连接,也可以手动管理连接。我推荐前者,这就是 spring db api 的使用方式。

关于java - 为什么 MyBatis 在执行每条语句后都会关闭 session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9598520/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com