Phoenix Hbase springjdbc整合

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/buyaore_wo/article/details/83512272

1.安装hbase

下载解压hbase即可

2.hbase整合Phoenix 

下载hbase对应版本的Phoenix,解压后拷贝bin目录下 phoenix-xxx-HBase-xx-server.jar到lbase/lib目录下,重启hbase

3.jdbc template配置

package com.example.demo;

import org.apache.commons.dbcp.BasicDataSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.core.JdbcTemplate;

@Configuration
public class PhoenixConfig {

	@Bean
	public BasicDataSource phoenixDataSource() {
		BasicDataSource basicDataSource = new BasicDataSource();
		basicDataSource.setDriverClassName("org.apache.phoenix.jdbc.PhoenixDriver");
		basicDataSource.setUrl("jdbc:phoenix:10-9-38-75:2181");
		basicDataSource.setUsername("");
		basicDataSource.setPassword("");
		basicDataSource.setInitialSize(20);
		basicDataSource.setMaxActive(100);
		basicDataSource.setDefaultAutoCommit(true);
		return basicDataSource;
	}

	@Autowired
	@Bean
	public JdbcTemplate phoenixJdbcTemplate(BasicDataSource phoenixDataSource) {
		return new JdbcTemplate(phoenixDataSource);
	}

}

4.使用

DaoSupport

package com.example.demo.dao.support;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapperResultSetExtractor;

public abstract class DaoSupport<T> {

	@Resource
	private JdbcTemplate jdbcTemplate;

	/**
	 * 由子类实现得到持久对象类, 即此dao操作是哪个持久类对应的数据表
	 * 
	 * @return
	 */
	public abstract Class<T> getEntityClass();

	public abstract String table();

	protected RowMapperResultSetExtractor<T> rowMapper() {
		BeanPropertyRowMapper<T> beanPropertyRowMapper = new BeanPropertyRowMapper<>(getEntityClass());
		RowMapperResultSetExtractor<T> extractor = new RowMapperResultSetExtractor<T>(beanPropertyRowMapper);
		return extractor;
	}

	public List<T> findAll() {
		return jdbcTemplate.query("select * from " + table(), rowMapper());
	}

	public T findOne(String sql) {
		return jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<>(getEntityClass()), null);
	}

	public void execute(String sql) {
		jdbcTemplate.execute(sql);
	}

}

DemoService

package com.example.demo.service;

import java.util.Iterator;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.annotation.Resource;

import org.springframework.data.hadoop.hbase.HbaseTemplate;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.RowMapperResultSetExtractor;
import org.springframework.stereotype.Service;

import com.example.demo.dao.UserInfoDao;
import com.example.demo.support.HBaseResultBuilder;
import com.example.demo.support.PutExtension;
import com.example.demo.vo.UserInfo;

@Service
public class DemoService {
	public static final String TABLE_NAME = "user_info";

	@Resource
	private HbaseTemplate hbaseTemplate;
	@Resource
	UserInfoDao userInfoDao;

	public String rowKey = "chinfeng1";
	public String familyName = "base";

	@PostConstruct
	public void test() {
		userInfoDao.execute("upsert into user_info(username,password,population) values('test','123456',1070)");

		BeanPropertyRowMapper<UserInfo> beanPropertyRowMapper = new BeanPropertyRowMapper<>(UserInfo.class);

		RowMapperResultSetExtractor<UserInfo> extractor = new RowMapperResultSetExtractor<>(beanPropertyRowMapper);

		List<UserInfo> infos = userInfoDao.findAll();

		for (Iterator iterator = infos.iterator(); iterator.hasNext();) {
			UserInfo userInfo = (UserInfo) iterator.next();
			System.out.println(userInfo.getUsername());
		}

		// testPut();
		// UserInfo userInfo = testFind();
		// System.out.println(userInfo.getUsername() + "-----------------------" +
		// userInfo.getPassword());
	}

	public UserInfo testFind() {
		// List<String> rows = hbaseTemplate.find(TABLE_NAME, "username", "name", new
		// RowMapper<String>() {
		// public String mapRow(Result result, int i) throws Exception {
		// return result.toString();
		// }
		// });
		// System.out.println("------" + rows);
		// hbaseTemplate.fin

		return (UserInfo) hbaseTemplate.get(TABLE_NAME, rowKey, familyName,
				(result, i) -> new HBaseResultBuilder<>(familyName, result, UserInfo.class).build("username")
						.build("password").fetch());
	}

	public void testPut() {
		// hbaseTemplate.put(TABLE_NAME, "1", "username", "name",
		// Bytes.toBytes("chinfeng"));
		hbaseTemplate.execute(TABLE_NAME, (table) -> {
			PutExtension putExtension = new PutExtension(familyName, rowKey.getBytes());
			putExtension.build("username", "chinfeng").build("password", "123456");
			table.put(putExtension);
			return true;
		});

		System.out.println("=======put done");
	}
}

5.表结构

CREATE TABLE IF NOT EXISTS user_info (

username VARCHAR NOT NULL,

password VARCHAR NOT NULL,

population BIGINT CONSTRAINT my_pk PRIMARY KEY (username, password)

);

----------------插入数据语句

upsert into user_info(username,password,population) values('test','123456',1070);

源码:

https://download.csdn.net/download/buyaore_wo/10751652

(不想要分,但貌似不能设置csdn下载分为0分)

猜你喜欢

转载自blog.csdn.net/buyaore_wo/article/details/83512272
今日推荐