摘要: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项目开源相关推荐

  1. 基于英飞凌AURIX的平衡单车组逐飞BLDC项目开源

    简 介: 本文转载了来自于SeekFree科技关于无刷直流电机电路设计开源方案,仅供大家学习使用.对于参加全国大学生智能车竞赛的同学请注意:室内单车组平衡轮驱动允许直接使用直流电机驱动,也允许使用无刷 ...

  2. 测试项目开源_测验您对开源的承诺

    测试项目开源 在今年的OSCON上, Bluehost的 Jared Smith谈到了我们的公司如何成为良好的开源公民. 在ByWater Solutions ,我的工作包括参与社区外展活动,并让每个 ...

  3. 医疗项目 开源_医疗保健受开源影响最大的行业之一

    医疗项目 开源 医疗保健是当今时代最紧迫的社会经济问题之一. 今年,Opensource.com看到了许多有关采用开源方式和开源软件(包括工具)来缓解医疗保健行业所面临的许多问题的新闻和专题报道. 这 ...

  4. BILIBILI 高并发实时弹幕系统那些事(项目开源、架构演变)

    原文地址:http://blog.csdn.net/hxqneuq2012/article/details/52813937 B 站建立开源工作组:ijkplayer 等多个项目开源 SegmentF ...

  5. 【嵌入式项目开源】基于ESP32的墨水屏桌面小屏幕

    首先简要介绍一下这个项目: 这个项目的开源主要包括硬件,固件和软件两部分,外壳后面如果做了也会开源出来.该项目主要是参考了以下教学视频. 链接:桌面小屏幕实战教学 其中硬件部分改动不大,主要是把USB ...

  6. 并联四足机器人项目开源教程(六)--- Cheetah开源项目的代码框架移植

    这个是本人在大三期间做的项目 ---- 基于MIT的Cheetah方案设计的十二自由度并联四足机器人,这个项目获得过两个国家级奖项和一个省级奖项.接下来我会将这个机器人的控制部分所有代码进行开源,并配 ...

  7. 医疗项目 开源_开源医疗IT的未来

    医疗项目 开源 弗雷德·特罗特(Fred Trotter)很容易辨认: 他是个身材高大的男人. 不管他是在挥舞着招牌的金发般的震撼力,还是像他每年一次那样剃光秃头,他都不会在人群中失踪. 在聚集了开源 ...

  8. 人脸搜索项目开源了:人脸识别(M:N)

    ​ 一.人脸检测相关概念 人脸检测(Face Detection)是检测出图像中人脸所在位置的一项技术,是人脸智能分析应用的核心组成部分,也是最基础的部分.人脸检测方法现在多种多样,常用的技术或工具大 ...

  9. Android 高仿唱吧 咔拉ok 商业项目开源代码 K歌合成 伴奏录音合成MP3(音频五)

    Android MediaRecorder录音录像 暂停 继续录音 播放 ARM格式(音频一) https://blog.csdn.net/WHB20081815/article/details/88 ...

  10. 毕业设计 基于stm32的RFID与指纹识别的门禁系统 (项目开源)

    文章目录 1 简介 2 绪论 2.1 课题背景与目的 3 射频识别 3.1 射频识别技术 3.2 射频识别模块 3.2.1 RFID模块 3.2.2 RFID模块组成 4 系统设计 4.1 系统架构 ...

最新文章

  1. 力邀安卓为鸿蒙效力,期末阅读题答题秘籍2
  2. 对话吴恩达:为什么说制造业会是首个聚焦AI转型的行业?
  3. python调用百度识别文字接口_python调用百度通用文字识别接口进行验证码识别
  4. camera理论基础和工作原理【转】
  5. python操作redis--------------数据库增删改查
  6. 《微信公众平台开发:从零基础到ThinkPHP5高性能框架实践》——3.3 微信开发者中心...
  7. 科学计算机乱码,软件界面乱码可以这么“破”
  8. linux c ide ssh,VSCode配置远程SSH-IDE
  9. sql server和mysql的区别是什么
  10. Properties常用方法
  11. 微软2022服务器,​微软公开地分享了即将发布的WindowsServer 2022的特性
  12. Android Exception 8(Couldn't read row 0, col -1 from CursorWindow)
  13. 计算机二级python什么水平_计算机二级python好过吗 通过率是多少
  14. python学习(10)字典学习,写一个三级菜单程序
  15. Java学习关于时间操作的应用类--Date类、Calendar类及其子类
  16. 基于WinPcap获取设备列表
  17. js高级学习笔记(b站尚硅谷)-12-执行上下文
  18. 怎么学习大数据,入门大数据要掌握哪些知识?
  19. MATLAB 快速傅里叶变换分析
  20. 笔记本cpu天梯图2022

热门文章

  1. [MATLAB]求解鸡兔同笼问题,共有头36个,脚100个,求笼内共有多少只鸡和多少只兔子。
  2. C语言-小鲁摘苹果-PTA
  3. win10 1903 回收站属性无法操作问题
  4. 有没有好用的数据恢复软件推荐?
  5. 电商“三国杀”:消失的子弹
  6. 鼻纹识别,让AI寻宠照进现实
  7. 视频号如何涨粉,视频号涨粉运营技巧
  8. 车速表 html 效果,车速表的道道
  9. 【毕业设计_课程设计】基于Django和vue的微博用户情感分析系统
  10. python Pulp求解线性规划问题