问题描述
- MyBatits执行效率问题
- 下面是我的sql:
<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>
在controller里面通过service的接口调用dao的getKnowledgePageList接口,这条sql在客户端执行很快,在0.20s左右,但是在程序中通过这种方式执行很慢,一般都在2000ms左右,10倍了,那个占位符#我也换成$试过了,甚至把参数写死,还是很慢,速度没有明显提升。
下面是我的mybatits配置文件:
<?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 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"" /> <!-- 方言实现类 自定义实现 --> <!-- 实现 org.springagg.mybatis.IDialect 接口 --> <property name=""dialectClazz"" value=""com.dc.mybatis.dialect.MySqlDialect"" /> </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"" /> </bean> <!-- 扫描目录在com.dc.web.dao下所有继承 SqlMapper接口的Mapper接口,也可以使用注解来标记 --> <bean class=""org.mybatis.spring.mapper.MapperScannerConfigurer""> <!-- 可以指定多个包名,以逗号或分号分隔 --> <property name=""basePackage"" value=""com.dc.web.dao"" /> <property name=""annotationClass"" value=""org.springframework.stereotype.Repository"" /> <!-- 以注解标记 --> <property name=""sqlSessionTemplateBeanName"" value=""sqlSessionTemplate"" /> </bean> <!--通过模板定制MyBatis的行为 --> <bean id=""sqlSessionTemplate"" class=""org.mybatis.spring.SqlSessionTemplate""> <constructor-arg index=""0"" ref=""sqlSessionFactory"" /> <!-- 更新采用批量(BATCH)模式 insert delete 返回值将会为 -2147482646 配置和设定执行器 --> <!-- SIMPLE 执行器执行其它语句。REUSE 执行器可能重复使用prepared statements 语句,BATCH执行器可以重复执行语句和批量更新。 --> <constructor-arg index=""1"" value=""SIMPLE"" /> </bean></beans>
链接池配置:
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=wallstat
不知道是哪里导致慢了。
解决方案
关于语言的执行效率问题
JQuery 执行效率问题
jquery 执行效率问题
解决方案二:
2000ms 也就2s,也差不多了,算上java语句 的执行mybatis的处理
时间: 2024-09-09 18:17:49