美文网首页
mhub-sqlcollect集成

mhub-sqlcollect集成

作者: jie_hoang | 来源:发表于2017-08-10 12:34 被阅读0次

    mhub-sqlcollect 使用说明

    此模块用于收集项目中可能影响效率的分页查询SQL,主要用于项目开发阶段的SQL优化

    背景说明

    MHUB框架中,我们使用了PageHelper 作为分页插件,它会根据你使用的数据库来将你的**ByPage的sql改装成一个分页查询的sql,并顺带生成一个查询总数的sql,这条sql的生成使用了SQL解析工具SQLParser,当解析失败时(不规范的sql或自定义函数等,都可能导致解析失败),查询总数的sql会直接使用select count(0) from ( 原sql ),效率可想而知。
    怎么解决呢?MHUB里提供了@MhubCount注解(com.woyi.annotation.MhubCount),该注解在DAO层使用,使用参照如下:

    /** 分页查询sql */
    @MhubCount(paramTypes = {ChatRecord.class, MPage.class}, queryCountMethodName = "getChatRecordByPageForCount")
    Page<ChatRecord> getChatRecordByPage(@Param("chatRecord")ChatRecord chatRecord, MPage page);
    
    /** 优化过的count查询sql */
    Long getChatRecordByPageForCount(@Param("chatRecord")ChatRecord chatRecord, MPage page);
    

    mapper里对应的getChatRecordByPageForCount写优化过的count查询sql

    SQL收集的配置方法

    1. 运行sys_sql_collection.sql(MySQL, Oracle),创建表

    2. 添加依赖 mhub-sqlcollect.jar

    compile "com.woyitech:mhub-sqlcollect:2.0"
    

    3. applicationContext-public.xml中mybatis配置添加拦截器

    <bean id="queryPageInterceptor" class="com.woyi.mhub.expand.sqlcollection.interceptor.QueryPageInterceptor" />
    

    ** 注意其位置必须在pageHelper后 **

    ** 样例:**

    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
            <property name="dataSource" ref="dataSource" />
            <property name="configLocation" value="classpath:mybatis-config.xml"></property>
            <property name="mapperLocations" value="classpath*:com/woyi/**/**/mappers/${jdbc.databasetype}/*Mapper.xml"></property>
            <property name="plugins">
                <array>
                    <bean id="pageHelper" class="com.github.pagehelper.PageHelper">
                        <property name="properties">
                            <!--注意 方言全部使用小写字母 -->
                            <!--mysql, mariadb, sqlite, oracle, hsqldb, postgresql, sqlserver, db2, informix -->
                            <value>
                                dialect=${jdbc.databasetype}
                            </value>
                        </property>
                    </bean>
                    <!-- 必须在PageHelper后 -->
                    <bean id="queryPageInterceptor" class="com.woyi.mhub.expand.sqlcollection.interceptor.QueryPageInterceptor" />
                </array>
            </property>
    </bean>
    

    4. 添加菜单

    /web/sqlCollection/list/web/sqlCollection/list

    初始化菜单

    INSERT INTO `sys_menu`
    (menuid`,`menustatus`,`menuname`,`menucode`,`menuparentcode`,`menutype`,`menuurl`,`menulevl`,`menusort`,`menumemo`,`deleteable`,`menupositionname`,`opentype`,`grantable`,`creator`)
    VALUES
    ('e570d738-77f9-11e7-8373-00155d023b00','1','SQL收集器','mhub_expand_sqlcollect','mhub_baseapp','0','/web/sqlCollection/list','2','6','','0','','0','0','eb9e2211-f652-11e5-af4e-50465d555c06'    );
    

    相关文章

      网友评论

          本文标题:mhub-sqlcollect集成

          本文链接:https://www.haomeiwen.com/subject/rhkhrxtx.html