ホームページ >データベース >mysql チュートリアル >mybatis-MyBatits执行效率问题
mybatismysqlspringjava
下面是我的sql:
<code> <select id="getKnowledgePageList" resultmap="KnowledgeMap" parametertype="Knowledge"> select d.id recid, d.id, d.knowledgeName, d.isLeaf, case d.isLeaf when 1 then 0 when 0 then ( select max(t.isLeaf) from tb_knowledge t where t.parentKnowledgeId = d.id) end as hasLeaf from tb_knowledge d where d.parentKnowledgeId=#{parentKnowledgeId} and d.knowledgeStatus=#{knowledgeStatus} </select></code>
在controller里面通过service的接口调用dao的getKnowledgePageList接口,这条sql在客户端执行很快,在0.20s左右,但是在程序中通过这种方式执行很慢,一般都在2000ms左右,10倍了,那个占位符#我也换成$试过了,甚至把参数写死,还是很慢,速度没有明显提升。
下面是我的mybatits配置文件:
<code> <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemalocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 配置 MyBatis SqlSessionFactoryBean --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"></property> <property name="plugins"> <array> <!-- | 分页插件配置 | 插件首先会根据方言查找实现类,如果未找到则使用自定义的实现类,两者均为配置则抛出异常 | dialectType 数据库方言 | 默认支持 mysql|oracle | dialectClazz 方言实现类 | 自定义需要实现 org.springagg.mybatis.IDialect接口 | --> <bean id="paginationInterceptor" class="com.dc.mybatis.plugins.PaginationInterceptor"> <!-- 分页插件属性配置 优先采用方言配置,无匹配时采用实现类。二者均未配置则抛出异常 --> <!-- 数据库方言 默认仅支持 mysql[1] 与 oracle[2] --> <property name="dialectType" value="1"></property> <!-- 方言实现类 自定义实现 --> <!-- 实现 org.springagg.mybatis.IDialect 接口 --> <property name="dialectClazz" value="com.dc.mybatis.dialect.MySqlDialect"></property> </bean> </array> </property> <!-- mapper和resultmap配置路径 --> <property name="mapperLocations"> <list> <!--表示在classpath下mapper目录中以-mapper.xml结尾所有文件 --> <value>classpath:mapper/*-mapper.xml</value> </list> </property> <!-- 扫描别名定义,多个包名以逗号或分号分隔 --> <property name="typeAliasesPackage" value="com.dc.web.bean"></property> </bean> <!-- 扫描目录在com.dc.web.dao下所有继承 SqlMapper接口的Mapper接口,也可以使用注解来标记 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <!-- 可以指定多个包名,以逗号或分号分隔 --> <property name="basePackage" value="com.dc.web.dao"></property> <property name="annotationClass" value="org.springframework.stereotype.Repository"></property> <!-- 以注解标记 --> <property name="sqlSessionTemplateBeanName" value="sqlSessionTemplate"></property> </bean> <!--通过模板定制MyBatis的行为 --> <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate"> <constructor-arg index="0" ref="sqlSessionFactory"></constructor-arg> <!-- 更新采用批量(BATCH)模式 insert delete 返回值将会为 -2147482646 配置和设定执行器 --> <!-- SIMPLE 执行器执行其它语句。REUSE 执行器可能重复使用prepared statements 语句,BATCH执行器可以重复执行语句和批量更新。 --> <constructor-arg index="1" value="SIMPLE"></constructor-arg> </bean></beans></code>
链接池配置:
<code>druid.initialSize=1druid.minIdle=2druid.maxActive=50druid.maxWait=60000druid.timeBetweenEvictionRunsMillis=60000druid.minEvictableIdleTimeMillis=300000druid.validationQuery=SELECT 'x'druid.testWhileIdle=truedruid.testOnBorrow=falsedruid.testOnReturn=falsedruid.poolPreparedStatements=truedruid.maxPoolPreparedStatementPerConnectionSize=20druid.filters=wall,stat</code>
不知道是哪里导致慢了。