mybatis-MyBatits执行效率问题

问题描述

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

mybatis-MyBatits执行效率问题的相关文章

Hibernate VS MyBatis 区别 Hibernate3和MyBatis(iBatis)的执行效率比较

我不想引起Hibernate和Mybatis的口水仗,关于这个的孰是孰非,JE上有很多. 关于O/R Mapping的理论,网上也有很多.其实完整的O/R mapping理论是想让程序员从数据的CRUD中解放出来,专注于使用OO的思想来实现业务逻辑,使用OO的思想当然就很大程度上需要遵守SOLDI原则,而不是一会要用OO的眼光建立业务领域模型,一会要用Relation的数学观点来操作数据. 还有一点,在O/R Mapping也提到了,就是要让那些不熟悉SQL的人也能开发需要数据存储的工程,所以才

详解MyBatis直接执行SQL查询及数据批量插入_java

一.直接执行SQL查询: 1.mappers文件节选 <resultMap id="AcModelResultMap" type="com.izumi.InstanceModel"> <result column="instanceid" property="instanceID" jdbcType="VARCHAR" /> <result column="insta

如何提高IIS 5.0网站伺服器的执行效率呢?

iis|执行 提高IIS 5.0执行效率 如何提高Windows 2000 Server中IIS 5.0网站伺服器的执行效率呢? 提高IIS执行效率的方法如下: 1. 启用HTTP的持续作用可以改善15~20%的执行效率. 2. 不启用记录可以改善5~8%的执行效率. 3. 使用 [独立] 的处理程序会损失20%的执行效率. 4. 增加快取记忆体的保存档案数量,可提高Active Server Pages之效能. 5. 勿使用CGI程式. 6. 增加IIS 5.0电脑CPU数量. 7. 勿启用A

提高IIS 5.0网站服务器的执行效率的八种方法

iis|服务器|执行 以下是提高IIS 5.0网站服务器的执行效率的八种方法: 1. 启用HTTP的持续作用可以改善15~20%的执行效率. 2. 不启用记录可以改善5~8%的执行效率. 3. 使用 [独立] 的处理程序会损失20%的执行效率. 4. 增加快取记忆体的保存文档数量,可提高Active Server Pages之效能. 5. 勿使用CGI程式. 6. 增加IIS 5.0电脑CPU数量. 7. 勿启用ASP侦错功能. 8. 静态网页采用HTTP 压缩,大约可以减少20%的传输量. 简

用jamon来监控你的sql执行效率

/** *作者:张荣华 *日期:2008-2-25 **/ 之前有一篇文章讲到如何使用jamon来监控请求以及方法得调用(原文地址见:[url]http://www.iteye.com/post/354575 [/url]),本文属于其姊妹篇,使用jamon监控系统的sql调用及其调用效率. 需求: 1我们知道在使用hibernate得时候,我们可以打开show sql选项,可以直接查看sql语句调用的情况,那么当我们使用其他持久技术的时候我们也需要这个功能怎么办呢,没有关系,jamon能够帮我

SQL教程:提高SQL执行效率的几点建议

提高SQL执行效率的几点建议: ◆尽量不要在where中包含子查询; 关于时间的查询,尽量不要写成:where to_char(dif_date,'yyyy-mm-dd')=to_char('2007-07-01','yyyy-mm-dd'); ◆在过滤条件中,可以过滤掉最大数量记录的条件必须放在where子句的末尾; FROM子句中写在最后的表(基础表,driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表.如果有三个以上的连接查询,

学习ASP技巧:提高ASP页面的执行效率

技巧|页面|执行 导言 改善程序性能是一件很微妙的事情.尤其是和INTERNET相关的程序,像ASP程序,制约其性能的因素很多,像WEB服务器.TCP/IP网络和数据库服务器等.这些大都是与硬件相关.其实在软件上,好的程序设计的方法和正确的参数配置也可以提高程序的性能,有时在同等情况下只要改变一个参数,程序执行效率就能大大提高.本文就试着在这方面做些探索. 一.影响性能的因素 ASP程序运行的性能主要决定于以下2个大方面: 1.HTML页面的执行效率 2.反应时间,其中反应时间主要受制于下面要素

提高ASP页面的执行效率

页面|执行 导言 改善程序性能是一件很微妙的事情.尤其是和INTERNET相关的程序,像ASP程序,制约其性能的因素很多,像WEB服务器.TCP/IP网络和数据库服务器等.这些大都是与硬件相关.其实在软件上,好的程序设计的方法和正确的参数配置也可以提高程序的性能,有时在同等情况下只要改变一个参数,程序执行效率就能大大提高.本文就试着在这方面做些探索. 一.影响性能的因素 ASP程序运行的性能主要决定于以下2个大方面: 1.HTML页面的执行效率 2.反应时间,其中反应时间主要受制于下面要素: (

PHP 函数执行效率的小比较

就是把原来的数组中的数都"拆"成"单"位的. 下面是自己写的一个函数: 复制代码 代码如下: function splitStrToArray_mine($array) { $new_array = array(); foreach($array as $value) { $value = (string)$value; $len = strlen($value); for($i = 0; $i < $len; $i ++){ array_push($new_