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文件引入

  
  com.github  
  phoenix-plugin  
  0.0.1-SNAPSHOT  
  

2、配置数据源

在maven的工程中,在目录src/main/resources添加一个名为hbase-phoenix.xml的文件。如下目录:

src
     --main
           --resources
                 --hbase-phoenix.xm

示例内容如下:








	
		
			uba
			${phoenix.driver}
			${phoenix.url}
			uba
		


		
		
		
		
		
		

	

注意:Phoenix-Plugin支持多数据源的配置。由于url无法指定使用哪个库,这里用schema代表库名。每一个id对应一个schema(id名可以随便定义,但不要定义两个不同的schema对应到同一个id,这样会以最后一个为基准)

四、增删查改操作

1、增和改操作

(1)接口

/**
     * 插入或更新单条记录
     * 注意:如果有字段为null,数据库对应字段会设置为null
     * @author linbingwen
     * @since  2016年9月8日 
     * @param data
     * @throws Exception
     */
    public  void upsert(T data) throws Exception;

    /**
     * 插入或更新多条记录
     * 注意:如果有字段为null,数据库对应字段会设置为null
     * @author linbingwen
     * @since  2016年9月8日 
     * @param datas
     * @throws Exception
     */
    public  void upsert(List datas) throws Exception;

    /**
     * 插入或更新单条记录
     * 注意:如果有字段为null,这个字段会忽略不插入
     * @author linbingwen
     * @since  2016年9月8日 
     * @param data
     * @throws Exception
     */
    public  void upsertIgnoreNull(T data) throws Exception;

    /**
     * 插入或更新单条记录(phoenix中插入与更新使用相同命令)
     * 注意:如果有字段为null,这个字段会忽略不插入
     * @author linbingwen
     * @since  2016年9月8日 
     * @param datas
     * @throws Exception
     */
    public  void upsertIgnoreNull(List datas) throws Exception;

(2)使用方法

在上面的操作都做了之后就可以到这里。一定要确保表已存在、字段也有!!所以实例化连接对象

	PhoenixClinet phoenixClinet = new PhoenixClinet("uba");

注意:uba代表上面xml文件中配置的id。根据不同的id连接到不同的数据源

a、使用upsert接口

由于phoenix中删除和修改都是使用upsert命令。所以增和改操作调用同一个接口。如下

		List lins = new ArrayList();
		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 lins = new ArrayList();
		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_id
        score                   score
       newVisitCnt      new_visit_cnt

2、查找

(1)find接口

       /**
     * 根据指定sql查询
     * 注意:传入sql形如 select * from 表名 where 条件,也支持关联表查询
     * @author linbingwen
     * @since  2016年9月8日 
     * @param clazz 查询结果对应的属性名所在的类
     * @param sql select 语句
     * @return
     */
    public  List find(Class clazz, String sql) throws Exception;

    /**
     * 根据指定参数criteria构造过滤条件,获取符合条件的记录。
     * @author linbingwen
     * @param clazz
     * @param criteria
     * @param 
     * @return
     */
    public  List find(Class clazz, Criteria criteria) throws Exception;

(2)使用方法

	public void findBySqlTest() {
		try {
               String sql = "select * from uba.STUDENT_LIN";
		 List 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张图片

你可能感兴趣的:(Hive/Hbase编程指南)