我在 XML 文件中定义了一个大型搜索查询
<select id="searchItems" resultMap="myMap" parameterType="map">
SELECT
a lot of field
FROM multiple table with few joins
WHERE with few conditions
LIMIT x,y
</select>
上面的查询使用 limit 能够返回分页结果并避免在搜索中返回整个项目。但对于一个要求,我还需要返回查询找到的项目总数。
我的问题是:如何重用上面的查询来代替只选择 count(*) 并且显然没有 LIMIT?有没有办法分离每个查询部分并在 <select>
中重用它们标签?
最佳答案
你可以像这样提取公共(public)sql并重用:
<sql id="queryUserCondition">
where 1=1
</sql>
<select id="countAll" resultType="int">
select count(*) from user_info <include refid="queryUserCondition" />
</select>
<select id="findAll" resultMap="UserResultMap">
select <include refid="UserColumns" />
from user_info
<include refid="queryUserCondition" />
</select>
关于sql - MyBatis 重用查询来获取 count(*),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34576918/