PageHelper支持GreenPlum
greenplum是pivotal在postgresql的基础上修改的一个数据库,语法和postgresql通用。使用PageHelper做分页插件的时候,发现目前没有针对greenplum做支持,但是对postgresql做了支持,因为只是分页的时候用到,所以只需要支持分页的语法即可。
PageHelper的github、整合Spring Boot、greenplum
依赖:
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.3</version>
</dependency>
1、配置文件
pagehelper:
helperDialect: mysql # 默认的
autoRuntimeDialect: true # 必填
reasonable: true
supportMethodsArguments: true
params: count=countSql
auto-dialect: true # 必填
close-conn: false
offset-as-page-num: true
2、代码
com.github.pagehelper.page.PageAutoDialect中配置了各个方言。
static {
//注册别名
dialectAliasMap.put("hsqldb", HsqldbDialect.class);
dialectAliasMap.put("h2", HsqldbDialect.class);
dialectAliasMap.put("postgresql", HsqldbDialect.class);
dialectAliasMap.put("phoenix", HsqldbDialect.class);
dialectAliasMap.put("mysql", MySqlDialect.class);
dialectAliasMap.put("mariadb", MySqlDialect.class);
dialectAliasMap.put("sqlite", MySqlDialect.class);
dialectAliasMap.put("oracle", OracleDialect.class);
dialectAliasMap.put("db2", Db2Dialect.class);
dialectAliasMap.put("informix", InformixDialect.class);
dialectAliasMap.put("sqlserver", SqlServerDialect.class);
dialectAliasMap.put("sqlserver2012", SqlServer2012Dialect.class);
dialectAliasMap.put("derby", SqlServer2012Dialect.class);
}
发现其实是使用jdbc的url的连接的jdbc:<数据库>://<IP>:<PODT>/<DB>中的<数据库>来作为key的。
postgresql的url格式:
jdbc:postgresql://localhost:5432/postgres
greenplum的jdbc配置连接格式为:
jdbc:pivotal:greenplum://localhost:5432;DatabaseName=test
我们需要将pivotal作为key,HsqldbDialect.class作为value添加到com.github.pagehelper.page.PageAutoDialect的dialectAliasMap中即可。
PageHelper是从jdbcUrl获得数据源的方言的,获取之后会缓存到com.github.pagehelper.page.PageAutoDialect#urlDialectMap中:
private String fromJdbcUrl(String jdbcUrl) {
for (String dialect : dialectAliasMap.keySet()) {
if (jdbcUrl.indexOf(":" + dialect + ":") != -1) {
return dialect;
}
}
return null;
}
配置类PageHelperConfiguration实现:
import com.github.pagehelper.autoconfigure.PageHelperAutoConfiguration;
import com.github.pagehelper.dialect.helper.HsqldbDialect;
import com.github.pagehelper.page.PageAutoDialect;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.context.annotation.Configuration;
import javax.annotation.PostConstruct;
import java.lang.reflect.Field;
import java.util.Map;
@AutoConfigureAfter(PageHelperAutoConfiguration.class)
@Configuration
public class PageHelperConfiguration {
final static Logger logger = LoggerFactory.getLogger(PageHelperConfiguration.class);
@PostConstruct
public void init() throws Exception {
try{
PageAutoDialect pageAutoDialect = new PageAutoDialect();
Field dialectAliasMap = pageAutoDialect.getClass().getDeclaredField("dialectAliasMap");
dialectAliasMap.setAccessible(true);
Map<String, Class<?>> dialectAliasMapValue = (Map<String, Class<?>>)dialectAliasMap.get(pageAutoDialect);
dialectAliasMapValue.put("pivotal", HsqldbDialect.class);
}catch (Exception e) {
logger.error("修改 PageAutoDialect 出错:{}", e.getMessage());
throw e;
}
}
}
PageHelper支持GreenPlum的更多相关文章
- GreenPlum简单性能测试与分析--续
版权声明:本文由黄辉原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/259 来源:腾云阁 https://www.qclou ...
- GreenPlum简单性能测试与分析
版权声明:本文由黄辉原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/195 来源:腾云阁 https://www.qclou ...
- Greenplum——升级的分布式PostgresSQL
Greenplum数据库基于PostgreSQL开源技术.本质上讲,它是多个PostgreSQL实例一起充当一个数据库管理系统.Greenplum以PostgreSQL 8.2.15为基础构建,在SQ ...
- Greenplum 简单性能测试与分析
如今,多样的交易模式以及大众消费观念的改变使得数据库应用领域不断扩大,现代的大型分布式应用系统的数据膨胀也对数据库的海量数据处理能力和并行处理能力提出了更高的要求,如何在数据呈现海量扩张的同时提高处理 ...
- Pivotal开源基于PostgreSQL的数据库Greenplum
http://www.infoq.com/cn/news/2015/11/PostgreSQL-Pivotal 近日,Pivotal宣布开源大规模并行处理(MPP)数据库Greenplum,其架构是针 ...
- 【大数据之数据仓库】HAWQ versus GreenPlum
谈到GreenPlum,肯定会有同事说HAWQ!是的,在本系列第一篇选型流水记里,也有提到.因为对HAWQ接触有限,没有深入具体了解,所以很多信息都是来自于博文,人云亦云,我把看过的资料简要整理,希望 ...
- spring-boot | 整合通用Mabatis 分页插件PageHelper
Mybatis通用Mapper介绍 Mybatis 通用 Mapper 极其方便的使用 Mybatis 单表的增删改查,支持单表操作,不支持通用的多表联合查询 优点: 通用 Mapper 可以极大的方 ...
- Mybatis中使用PageHelper插件进行分页
分页的场景比较常见,下面主要介绍一下使用PageHelper插件进行分页操作: 一.概述: PageHelper支持对mybatis进行分页操作,项目在github地址: https://github ...
- Github PageHelper 原理解析
任何服务对数据库的日常操作,都离不开增删改查.如果一次查询的纪录很多,那我们必须采用分页的方式.对于一个Springboot项目,访问和查询MySQL数据库,持久化框架可以使用MyBatis,分页工具 ...
随机推荐
- Java程序员的两项通用能力
工作这几年来,经历了很多.从小白到中级(手机里有一款叫中国象棋的游戏,里面给对弈中电脑水平分为小白.菜鸟.新手.入门.初级.中级.高级.大师.特级大师,编程我暂且按照这样来区分). 学校教给我的是从小 ...
- [JavaWeb基础] 028.CSS简介和基础语法
css 概述 CSS 指层叠样式表 (Cascading Style Sheets) 样式定义如何显示 HTML 元素 样式通常存储在样式表中 把样式添加到 HTML 4.0 中,是为了解决内容与表现 ...
- Codeforces Round #646 (Div. 2)【C. Game On Leaves 题解】
题意分析 关于这道题,意思就是两个人摘叶子,谁最后摘到编号为x的谁就赢了.既然是叶子,说明其最多只有一个分支,由于题目上说了是无向图,那就是度数小于等于的节点.也就是一步步移除度数小于等于的节点,直到 ...
- Rocket - diplomacy - MixedNode
https://mp.weixin.qq.com/s/zgeAI2n-2cHJi7-Ra5rYZA 介绍MixedNode的实现. 1. 类定义 2. inner/ou ...
- 【Linux】CentOS 7安装与使用,安装jdk1.8,安装mysql
虚拟机软件VMware Workstation Pro 安装CentOS7,准备好镜像文件! 一定要勾选"启动时连接" 语言选英语 时区点击上海 确认硬盘,就是点击黄色警告的那个, ...
- Java实现 蓝桥杯VIP 算法训练 筛选号码
算法训练 筛选号码 Description 有n个人围成一圈,顺序排号(编号为1到n).从第1个人开始报数(从1到3报数),凡报到3的人退出圈子.从下一个人开始继续报数,直到剩下最后一个人,游戏结束. ...
- JVM 由哪些部分组成?
JVM 由哪些部分组成? 解析:这是对 JVM 体系结构的考察 答:JVM 的结构基本上由 4 部分组成: 类加载器,在 JVM 启动时或者类运行时将需要的 class 加载到 JVM 中 执行引擎, ...
- java实现第七届蓝桥杯压缩变换
压缩变换 压缩变换 小明最近在研究压缩算法. 他知道,压缩的时候如果能够使得数值很小,就能通过熵编码得到较高的压缩比. 然而,要使数值很小是一个挑战. 最近,小明需要压缩一些正整数的序列,这些序列的特 ...
- 嵌入式Linux内核开发工程师必须掌握的三十道题
如果你能正确回答以下问题并理解相关知识点原理,那么你就可以算得上是基本合格的Linux内核开发工程师. 1. Linux中主要有哪几种内核锁?(进程同步与互斥) (1)自旋锁:非睡眠锁 (2)信号量: ...
- 04-Python基础3
本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 1.列表生成式,迭代器&生成器 列表生成式 孩子,我现在有个需 ...