mhub-sqlcollect集成

mhub-sqlcollect 使用說明

此模塊用于收集項(xiàng)目中可能影響效率的分頁查詢SQL,主要用于項(xiàng)目開發(fā)階段的SQL優(yōu)化

背景說明

MHUB框架中,我們使用了PageHelper 作為分頁插件,它會(huì)根據(jù)你使用的數(shù)據(jù)庫來將你的**ByPage的sql改裝成一個(gè)分頁查詢的sql,并順帶生成一個(gè)查詢總數(shù)的sql,這條sql的生成使用了SQL解析工具SQLParser,當(dāng)解析失敗時(shí)(不規(guī)范的sql或自定義函數(shù)等,都可能導(dǎo)致解析失?。?,查詢總數(shù)的sql會(huì)直接使用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);

/** 優(yōu)化過的count查詢sql */
Long getChatRecordByPageForCount(@Param("chatRecord")ChatRecord chatRecord, MPage page);

mapper里對(duì)應(yīng)的getChatRecordByPageForCount寫優(yōu)化過的count查詢sql

SQL收集的配置方法

1. 運(yùn)行sys_sql_collection.sql(MySQL, Oracle),創(chuàng)建表

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'    );
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,172評(píng)論 25 708
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,641評(píng)論 19 139
  • 這部分主要是開源Java EE框架方面的內(nèi)容,包括Hibernate、MyBatis、Spring、Spring ...
    雜貨鋪老板閱讀 1,570評(píng)論 0 2
  • 這幾天一直在看人生這部小說,看完以后,我覺得加林的最后命運(yùn),無論是事業(yè)還是感情都是必然的。 首先事業(yè)上,因?yàn)槌錾r(nóng)...
    魚子桃醬閱讀 226評(píng)論 0 1
  • 我必須是你近旁的一株木棉, 作為樹的形象和你站在一起, 根,緊握在地下; 葉;相觸在云里; 每一陣風(fēng)吹過, 我們...
    h小慧閱讀 593評(píng)論 2 1

友情鏈接更多精彩內(nèi)容