文档章节

mybatis-generator 插件扩展,生成支持多种数据库的分页功能

alexgaoyh
 alexgaoyh
发布于 2015/11/09 14:03
字数 400
阅读 1643
收藏 6

    背景: 在使用mybatis的过程中,考虑到整合的框架在后期使用的过程中,有可能是需要兼容到多种数据库的,在这种前提条件下,完成通用CRUD功能的编写,本文前期先考虑到不同数据库针对分页功能的统一操作;例如mysql数据库的分页是limit关键字的使用, oracle数据库的分页是rownum关键字的使用;

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

    此例中主要使用的属性为  databaseIdProvider , 通过这个属性的使用,来生成支持多种数据库的sql分页语句:

    MutiDatasourcePaginationPlugin  类文件为扩展的mybatis-generator 插件,用来在生成代码文件的过程中,完成不同数据库支持下的分页逻辑代码部分;

    此例中只需要关心生成的 MutiDatabaseMapper.xml:

   

<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语句的引入操作;

    部分链接:

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

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

© 著作权归作者所有

共有 人打赏支持
alexgaoyh

alexgaoyh

粉丝 76
博文 82
码字总数 65212
作品 1
郑州
后端工程师
私信 提问
加载中

评论(1)

i
itxx2016
推荐国内最著名的mybatis代码生成网站 --- fwjava.com
baomidou/mybatis-plus

为简化开发工作、提高生产率而生 简介 | Intro Mybatis 增强工具包 - 只做增强不做改变,简化操作 技术讨论 QQ 群 576493122 优点 | Advantages 无侵入:Mybatis-Plus 在 Mybatis 的基础上进...

baomidou
2016/01/25
0
0
baomidou/mybatisplus-spring-boot-starter

#mybatisplus-spring-boot-starter mybatisplus-spring-boot-starter 为 Mybatis-Plus 快速集成 spring-boot 简化配置而生,不再需拿 MyBatis 和 Hibernate 相比,mybatis-plus 作为 mybati......

baomidou
2017/05/05
0
0
Spring整合MybatisPlus学习笔记

简介 MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生 特性 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,...

锦城学长
2018/10/01
0
0
itdragons/espread

JAVA后台管理系统 Espread Espread基于Spring、SpringMVC、Mybatis、Shiro、Quartz、Maven、Easyui写的一个后台管理系统,集成Generator Sql生成器、多数据源切换、Aop日志、Mybatis通用Map...

itdragons
2017/11/30
0
0
Mybatis 增强类库 - easymybatis

easymybatis是一个mybatis增强类库,目的为简化mybatis的开发,让开发更高效。 easymybatis的特性如下: 无需编写xml文件即可完成CRUD操作。 支持多表查询、聚合查询、分页查询(支持多种数据...

tanghc
2017/08/22
3.9K
32

没有更多内容

加载失败,请刷新页面

加载更多

【大数据分析常用算法】9、马尔科夫模型

简介 这一章节我们讲解马尔科夫模型。给定一组随机变量(如顾客最近的交易日期),马尔科夫模型只根据前一个状态(前一个最近交易日期)的分部指示该变量最近的分布。 1、马尔科夫链基本原理...

Areya
18分钟前
0
0
vue自定义属性

vue自定义属性如果是固定的非写死的,可以直接写,例如 <button vkshop-event-name="buyNow" vkshop-event-type="click"></button> 如果是动态属性,需要加冒号 : <button :vkshop-event-na......

litCabbage
21分钟前
0
0
Java 线程池的使用好处

使用线程池的好处: 1.减少在创建和销毁线程上所花的时间以及系统资源的开销 2.如不使用线程池,有可能造成系统创建大量线程而导致消耗完系统内存 以下是Java自带的几种线程池: 1、newFixedT...

飓风2000
24分钟前
0
0
Ubuntu 16.04安装Java 8

1 Java 8 下载地址 http://www.oracle.com/technetwork/cn/java/javase/downloads/jdk8-downloads-2133151-zhs.html 2 以root用户登录将下载的jdk-8u92-linux-x64.tar.gz文件放到/temp目录下......

群星纪元
35分钟前
1
0
我们总结了每个技术团队都会遇到的 4 个难题

阿里巴巴 2019 年实习生校园招聘已经启动,为此,我们整理了一篇《每个技术团队都会遇到的4个难题》,帮助即将从校园进入公司实习的后端程序员,以实践的视角,看看一个后端技术团队会遇到的...

阿里云云栖社区
39分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部