PAP 快速開發框架:mybatis-generator 插件 多種數據庫分頁

    背景: 在使用mybatis的過程當中,考慮到整合的框架在後期使用的過程當中,有多是須要兼容到多種數據庫的,在這種前提條件下,完成通用CRUD功能的編寫,本文前期先考慮到不一樣數據庫針對分頁功能的統一操做;例如mysql數據庫的分頁是limit關鍵字的使用, oracle數據庫的分頁是rownum關鍵字的使用; html

    demo git地址部分: http://git.oschina.net/alexgaoyh/MutiModule-parent/commit/8e83bb3e5eca7e711a88927905343e499cac359e mysql

    此例中主要使用的屬性爲  databaseIdProvider , 經過這個屬性的使用,來生成支持多種數據庫的sql分頁語句: git

    MutiDatasourcePaginationPlugin  類文件爲擴展的mybatis-generator 插件,用來在生成代碼文件的過程當中,完成不一樣數據庫支持下的分頁邏輯代碼部分; github

    此例中只須要關心生成的 MutiDatabaseMapper.xml: spring

   

<select id="selectByExample" resultMap="BaseResultMap"
		parameterType="com.alexgaoyh.MutiModule.persist.mutiDatabase.MutiDatabaseExample">
		<include refid="OracleDialectPrefix" />
		select
		<if test="distinct">
			distinct
		</if>
		<include refid="Base_Column_List" />
		from mutidatabase mutiDatabase
		<if test="_parameter != null">
			<include refid="Example_Where_Clause" />
		</if>
		<if test="orderByClause != null">
			order by ${orderByClause}
		</if>
		<include refid="OracleDialectSuffix" />
		<include refid="MysqlDialect" />
	</select>

	<sql id="OracleDialectPrefix">
		<if test="page != null and _databaseId == 'oracle'">
			select * from ( select row_.*, rownum rownum_ from (
		</if>
	</sql>
	<sql id="OracleDialectSuffix">
		<if test="page != null and _databaseId == 'oracle'">
      <![CDATA[ ) row_ ) where rownum_ > #{page.begin} and rownum_ <= #{page.end} ]]>
		</if>
	</sql>
	<sql id="MysqlDialect">
		<if test="page != null and _databaseId == 'mysql'">
			limit #{page.begin} , #{page.length}
		</if>
	</sql>




    這樣,經過  databaseIdProvider  的不一樣,就完成不一樣sql語句的引入操做; sql

    部分連接: 數據庫

        http://stackoverflow.com/questions/29139092/mybatis-multi-datasource-configuration-issue mybatis

        https://mybatis.github.io/spring/factorybean.html oracle

相關文章
相關標籤/搜索