phoenix-plugin项目开源
摘要:phoenix-plugin是笔者自己封装的一个类似mybtis的orm框架,专门用来操作phoenix(一个基于hbase的数据库),项目地址:https://github.com/appleappleapple/phoenix-plugin
下面来看看使用说明:
phoenix-plugin使用说明
一、概述
Phoenix-Plugin 是一个使用jdbc封装了操作Hbase的工具类.可以快速的进行增删改查操作
二、环境
开发环境:Eclipse luna + windows7
编译环境:JDK7 + maven
三、使用配置
1、pom文件引入
<dependency> <groupId>com.github</groupId> <artifactId>phoenix-plugin</artifactId> <version>0.0.1-SNAPSHOT</version>
</dependency>
2、配置数据源
在maven的工程中,在目录src/main/resources添加一个名为hbase-phoenix.xml的文件。如下目录:
src--main--resources--hbase-phoenix.xm
示例内容如下:
<?xml version="1.0" encoding="UTF-8"?><!-- id :编号, 不能重复 -->
<!-- driver:表示驱动 -->
<!-- url:表示连接的地址 -->
<!-- schema:表示连接的地址 -->
<config><datasources><datasource><id>uba</id><driver>${phoenix.driver}</driver><url>${phoenix.url}</url><schema>uba</schema></datasource><!--<datasource> --><!--<id>tt</id> --><!--<driver>org.apache.phoenix.jdbc.PhoenixDriver</driver> --><!--<url>jdbc:phoenix:sach01-002,sach01-003,sach01-004</url> --><!--<schema>test</schema> --><!--</datasource> --></datasources>
</config>
注意:Phoenix-Plugin支持多数据源的配置。由于url无法指定使用哪个库,这里用schema代表库名。每一个id对应一个schema(id名可以随便定义,但不要定义两个不同的schema对应到同一个id,这样会以最后一个为基准)
四、增删查改操作
1、增和改操作
(1)接口
/*** 插入或更新单条记录* 注意:如果有字段为null,数据库对应字段会设置为null* @author linbingwen* @since 2016年9月8日 * @param data* @throws Exception*/public <T> void upsert(T data) throws Exception;/*** 插入或更新多条记录* 注意:如果有字段为null,数据库对应字段会设置为null* @author linbingwen* @since 2016年9月8日 * @param datas* @throws Exception*/public <T> void upsert(List<T> datas) throws Exception;/*** 插入或更新单条记录* 注意:如果有字段为null,这个字段会忽略不插入* @author linbingwen* @since 2016年9月8日 * @param data* @throws Exception*/public <T> void upsertIgnoreNull(T data) throws Exception;/*** 插入或更新单条记录(phoenix中插入与更新使用相同命令)* 注意:如果有字段为null,这个字段会忽略不插入* @author linbingwen* @since 2016年9月8日 * @param datas* @throws Exception*/public <T> void upsertIgnoreNull(List<T> datas) throws Exception;
(2)使用方法
在上面的操作都做了之后就可以到这里。一定要确保表已存在、字段也有!!所以实例化连接对象
PhoenixClinet phoenixClinet = new PhoenixClinet("uba");
注意:uba代表上面xml文件中配置的id。根据不同的id连接到不同的数据源
a、使用upsert接口
由于phoenix中删除和修改都是使用upsert命令。所以增和改操作调用同一个接口。如下
List<StudentLin> lins = new ArrayList<StudentLin>();Random random = new Random();for (int i = 1; i <= 100; i++) {StudentLin lin = new StudentLin();lin.setStuId(i);lin.setNewVisitCnt("lin" + i);lin.setClassId(random.nextInt(100));//lin.setScore(random.nextInt(100)); 这个字段会设置为Null插入lins.add(lin);}phoenixClinet.upsert(lins);
upsert接口支持list对象和单个对象存放
b、使用upsertIgnoreNull接口
List<StudentLin> lins = new ArrayList<StudentLin>();Random random = new Random();for (int i = 1; i <= 100; i++) {StudentLin lin = new StudentLin();lin.setStuId(i);lin.setNewVisitCnt("lin" + i);lin.setClassId(random.nextInt(100));//lin.setScore(random.nextInt(100)); 这个字段会忽略插入lins.add(lin);}phoenixClinet.upsertIgnoreNull(lins);
upsert和upsertIgnoreNull的区别:
如果StudentLin有字段为Null,如score。那么upsertIgnoreNull会直接忽略这个字段。 而upsert会将其设置为null.
一定要确保表名要和类名对应(陀峰法和下划线对应)
如:
java 类名 表名PersonLin person_lin
一定要确保表中字段和类中字段对应(陀峰法和下划线对应)
如:
java 字段名 表中字段名stuId stu_idscore scorenewVisitCnt new_visit_cnt
2、查找
(1)find接口
/*** 根据指定sql查询* 注意:传入sql形如 select * from 表名 where 条件,也支持关联表查询* @author linbingwen* @since 2016年9月8日 * @param clazz 查询结果对应的属性名所在的类* @param sql select 语句* @return*/public <T> List<T> find(Class<T> clazz, String sql) throws Exception;/*** 根据指定参数criteria构造过滤条件,获取符合条件的记录。* @author linbingwen* @param clazz* @param criteria* @param <T>* @return*/public <T> List<T> find(Class<T> clazz, Criteria criteria) throws Exception;
(2)使用方法
public void findBySqlTest() {try {String sql = "select * from uba.STUDENT_LIN";List<StudentLin> list = phoenixClient.find(StudentLin.class, sql);System.out.println(list);} catch (Exception e) {e.printStackTrace();}}
3、直接执行sql语句(如create/drop)
(1)接口
/*** 执行SQL, 也适应于drop table, create table, alter table等ddl操作* @author linbingwen* @param sql* @throws Exception drop table, create table, alter table等ddl操作* @return 执行成功返回true*/public boolean execute(String sql) throws Exception;
(2)使用方法
public void executeTest() {// String sql = "CREATE TABLE uba.lin_test (id varchar PRIMARY KEY,account varchar ,passwd varchar)";String sql = "drop table uba.lin_test";try {phoenixClient.execute(sql);} catch (Exception e) {e.printStackTrace();}}
个人技术公众号:
phoenix-plugin项目开源相关推荐
- 基于英飞凌AURIX的平衡单车组逐飞BLDC项目开源
简 介: 本文转载了来自于SeekFree科技关于无刷直流电机电路设计开源方案,仅供大家学习使用.对于参加全国大学生智能车竞赛的同学请注意:室内单车组平衡轮驱动允许直接使用直流电机驱动,也允许使用无刷 ...
- 测试项目开源_测验您对开源的承诺
测试项目开源 在今年的OSCON上, Bluehost的 Jared Smith谈到了我们的公司如何成为良好的开源公民. 在ByWater Solutions ,我的工作包括参与社区外展活动,并让每个 ...
- 医疗项目 开源_医疗保健受开源影响最大的行业之一
医疗项目 开源 医疗保健是当今时代最紧迫的社会经济问题之一. 今年,Opensource.com看到了许多有关采用开源方式和开源软件(包括工具)来缓解医疗保健行业所面临的许多问题的新闻和专题报道. 这 ...
- BILIBILI 高并发实时弹幕系统那些事(项目开源、架构演变)
原文地址:http://blog.csdn.net/hxqneuq2012/article/details/52813937 B 站建立开源工作组:ijkplayer 等多个项目开源 SegmentF ...
- 【嵌入式项目开源】基于ESP32的墨水屏桌面小屏幕
首先简要介绍一下这个项目: 这个项目的开源主要包括硬件,固件和软件两部分,外壳后面如果做了也会开源出来.该项目主要是参考了以下教学视频. 链接:桌面小屏幕实战教学 其中硬件部分改动不大,主要是把USB ...
- 并联四足机器人项目开源教程(六)--- Cheetah开源项目的代码框架移植
这个是本人在大三期间做的项目 ---- 基于MIT的Cheetah方案设计的十二自由度并联四足机器人,这个项目获得过两个国家级奖项和一个省级奖项.接下来我会将这个机器人的控制部分所有代码进行开源,并配 ...
- 医疗项目 开源_开源医疗IT的未来
医疗项目 开源 弗雷德·特罗特(Fred Trotter)很容易辨认: 他是个身材高大的男人. 不管他是在挥舞着招牌的金发般的震撼力,还是像他每年一次那样剃光秃头,他都不会在人群中失踪. 在聚集了开源 ...
- 人脸搜索项目开源了:人脸识别(M:N)
一.人脸检测相关概念 人脸检测(Face Detection)是检测出图像中人脸所在位置的一项技术,是人脸智能分析应用的核心组成部分,也是最基础的部分.人脸检测方法现在多种多样,常用的技术或工具大 ...
- Android 高仿唱吧 咔拉ok 商业项目开源代码 K歌合成 伴奏录音合成MP3(音频五)
Android MediaRecorder录音录像 暂停 继续录音 播放 ARM格式(音频一) https://blog.csdn.net/WHB20081815/article/details/88 ...
- 毕业设计 基于stm32的RFID与指纹识别的门禁系统 (项目开源)
文章目录 1 简介 2 绪论 2.1 课题背景与目的 3 射频识别 3.1 射频识别技术 3.2 射频识别模块 3.2.1 RFID模块 3.2.2 RFID模块组成 4 系统设计 4.1 系统架构 ...
最新文章
- 力邀安卓为鸿蒙效力,期末阅读题答题秘籍2
- 对话吴恩达:为什么说制造业会是首个聚焦AI转型的行业?
- python调用百度识别文字接口_python调用百度通用文字识别接口进行验证码识别
- camera理论基础和工作原理【转】
- python操作redis--------------数据库增删改查
- 《微信公众平台开发:从零基础到ThinkPHP5高性能框架实践》——3.3 微信开发者中心...
- 科学计算机乱码,软件界面乱码可以这么“破”
- linux c ide ssh,VSCode配置远程SSH-IDE
- sql server和mysql的区别是什么
- Properties常用方法
- 微软2022服务器,​微软公开地分享了即将发布的WindowsServer 2022的特性
- Android Exception 8(Couldn't read row 0, col -1 from CursorWindow)
- 计算机二级python什么水平_计算机二级python好过吗 通过率是多少
- python学习(10)字典学习,写一个三级菜单程序
- Java学习关于时间操作的应用类--Date类、Calendar类及其子类
- 基于WinPcap获取设备列表
- js高级学习笔记(b站尚硅谷)-12-执行上下文
- 怎么学习大数据,入门大数据要掌握哪些知识?
- MATLAB 快速傅里叶变换分析
- 笔记本cpu天梯图2022