Home  >  Article  >  Database  >  mybatis-MyBatits执行效率问题

mybatis-MyBatits执行效率问题

WBOY
WBOYOriginal
2016-06-06 09:37:221454browse

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>

不知道是哪里导致慢了。

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn