这个是报错版,会叫你添加jdbcType=varchar/number等
<select id="DOpenStatlist" parameterType="page" resultType="pd">
SELECT
DATE_FORMAT(START_TIME,'%Y-%m-%d') STARTTIME,<!-- 开始时间 -->
DATE_FORMAT(END_TIME,'%Y-%m-%d') ENDTIME,<!-- 结束时间 -->
COUNT(room_id) COUNT
FROM
result
GROUP BY
DATE_FORMAT(START_TIME,'%Y-%m-%d')
HAVING
1=1
<if test="pd.lastStart !=null and pd.lastStart !=''">
and
DATE_FORMAT(START_TIME,'%Y-%m-%d') >= #{pd.lastStart}
</if>
<if test="pd.lastEnd !=null and pd.lastEnd !=''">
and
DATE_FORMAT(END_TIME,'%Y-%m-%d') <= #{pd.lastEnd}
</if>
ORDER BY
DATE_FORMAT(START_TIME,'%Y-%m-%d')
DESC
</select>
这个是没有报jdbcType错误的。其原因该是性能问题,将GROUP BY 移至后面。
<select id="DOpenStatlist" parameterType="page" resultType="pd">
SELECT
DATE_FORMAT(START_TIME,'%Y-%m-%d') STARTTIME,<!-- 开始时间 -->
DATE_FORMAT(END_TIME,'%Y-%m-%d') ENDTIME,<!-- 结束时间 -->
COUNT(room_id) COUNT
FROM
result
WHERE
1=1
<if test="pd.lastStart !=null and pd.lastStart !=''">
and
DATE_FORMAT(START_TIME,'%Y-%m-%d') >= #{pd.lastStart}
</if>
<if test="pd.lastEnd !=null and pd.lastEnd !=''">
and
DATE_FORMAT(END_TIME,'%Y-%m-%d') <= #{pd.lastEnd}
</if>
GROUP BY
DATE_FORMAT(START_TIME,'%Y-%m-%d')
ORDER BY DATE_FORMAT(START_TIME,'%Y-%m-%d') DESC
</select>
警戒!
优化MyBatis分组查询
本文探讨了MyBatis中解决分组查询性能问题的方法,通过调整SQL语句结构,将过滤条件前置以提高查询效率。展示了如何避免因分组操作不当导致的错误,并提供正确的SQL编写方式。
2232

被折叠的 条评论
为什么被折叠?



