Rumah  >  Artikel  >  pangkalan data  >  mybatis-MyBatits执行效率问题

mybatis-MyBatits执行效率问题

WBOY
WBOYasal
2016-06-06 09:37:221455semak imbas

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>

不知道是哪里导致慢了。

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn