mybatis sql查询条件有时间时查询效率非常慢

最近在进行开发时发现一个奇葩的问题,sql在数据库查询速度不过1秒都不到在在后台却发现非常慢,通过打印dao方法时间和看mybatis log发现速度确实是很慢不是其他问题,然后一步步测试,首先加上<![CDATA[]]> 加在整个sql都没用,然后加上<if></>判断发现时间快了点,但还是属于慢,这里发现很奇葩的问题,比如网上查询时间段说什么>,=要转义,经过一步步测试我可以直接写> ,不过<需要转义成&lt; 实践才是那什么真理的,通过打印sql执行时间明确了确实是执行速度慢而不是转json或者其他环节慢,然后通过更换<![CDATA[]]>,还有&lt; 等转义字符发现问题依旧,然后通过写死时间格式为2017-09-25 00:00:00,发现这样速度跟数据库查询一致了,加上参数后就变慢了,这让我确定问题是存在于mybatis底层,可惜我没时间也没能力研究底层,这问题只能将解决方法放在这里,具体原因我会寻求mybatis社区发现这个问题,如果也有大神知道的话希望告诉我,将#换成$发现这问题才消失。真是很无语。

代码放下吧

	<!-- 查询部分sql -->
	<sql id="queryCriteria">
		<if test="StartOperateTime != null">
				 and ta.OperateTime >= '${StartOperateTime}'  
		</if>
		 <if test="EndOperateTime != null">
		and ta.OperateTime  &lt;= '${EndOperateTime}'
		</if> 
		<if test="CompanyName != null">
		and tv.DriverName like '%${TrsptDriverName}%'
		</if>
	</sql>

最后总结下问题:1:不能随便信网上的东西xml中可以写>,  <需要转义 2:mybatis原理需要探究下。

猜你喜欢

转载自blog.csdn.net/qq_34735535/article/details/78112957
今日推荐