1、Phoenix版本java
<dependency>
<groupId>org.apache.phoenix</groupId>
<artifactId>phoenix-core</artifactId>
<version>4.8.0-HBase-1.2</version>
</dependency>
2、鏈接Phoenix和基本CRUD封裝sql
import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.sql.*; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 功能介紹:使用jdbc對數據庫操做:查詢、更新(插入/修改/刪除)、批量更新 */ public class DButil { private final Logger LOGGER = LoggerFactory.getLogger(getClass()); /**jdbc的連接*/ private Connection conn = null; /**準備sql*/ private PreparedStatement ps = null; { initConnection(); } /** * @param sql * @param params 參數 * 功能介紹:更新操做(修改,刪除,插入) */ public int executeUpdate(String sql, Object[] params) { if(null == conn){ initConnection(); } try { ps = conn.prepareStatement(sql); if (params.length != 0) { for (int i = 0; i < params.length; i++) { ps.setObject(i + 1, params[i]); } } int rows = ps.executeUpdate(); conn.commit(); return rows; } catch (Exception e) { e.printStackTrace(); } finally { closeUpdate(); } return 0; } /** * @param sql * @param list * 功能介紹:批量更新 */ public void batchUpdate(String sql, List<Object[]> list) { if(null == conn){ initConnection(); } try { ps = conn.prepareStatement(sql); //關閉自動提交事務 conn.setAutoCommit(false); //防止內存溢出 final int batchSize = 1000; //記錄插入數量 int count = 0; int size = list.size(); Object[] obj = null; for (int i = 0; i < size; i++) { obj = list.get(i); for (int j = 0; j < obj.length; j++) { ps.setObject(j + 1, obj[j]); } ps.addBatch(); if (++count % batchSize == 0) { ps.executeBatch(); conn.commit(); } } ps.executeBatch(); conn.commit(); conn.setAutoCommit(true); } catch (SQLException e) { e.printStackTrace(); try { conn.rollback(); conn.setAutoCommit(true); } catch (SQLException e1) { e1.printStackTrace(); } } finally { //關閉資源 closeUpdate(); } } /** * @param sql * @param params * 功能介紹:查詢操做 */ public List<Map<String, Object>> executeQuery(String sql, Object[] params) { if(null == conn){ initConnection(); } ResultSet rs = null; List<Map<String, Object>> list = null; try { ps = conn.prepareStatement(sql); if (params != null) { for (int i = 0; i < params.length; i++) { ps.setObject(i + 1, params[i]); } } long startTime = System.currentTimeMillis(); rs = ps.executeQuery(); LOGGER.info("UserBigTableService sql-executeQuery-time: " + (System.currentTimeMillis() - startTime) + "ms"); list = new ArrayList<>(); //移動光標,若是新的當前行有效,則返回 true;若是不存在下一行,則返回 false while (rs.next()) { ResultSetMetaData rsmd = rs.getMetaData(); Map<String, Object> map = new HashMap<>(16); for (int i = 1; i <= rsmd.getColumnCount(); i++) { map.put(rsmd.getColumnName(i), rs.getObject(i)); } list.add(map); } return list; } catch (Exception e) { e.printStackTrace(); } finally { closeQuery(rs); } return null; } /** * @param sql * @param params * 功能介紹:查詢操做一條記錄 */ public Map<String, Object> query (String sql, Object[] params) { if(null == conn){ initConnection(); } ResultSet rs = null; Map<String, Object> map = null; try { ps = conn.prepareStatement(sql); if (params != null) { for (int i = 0; i < params.length; i++) { ps.setObject(i + 1, params[i]); } } rs = ps.executeQuery(); //移動光標,若是新的當前行有效,則返回 true;若是不存在下一行,則返回 false while (rs.next()) { ResultSetMetaData rsmd = rs.getMetaData(); map = new HashMap<>(16); for (int i = 1; i <= rsmd.getColumnCount(); i++) { map.put(rsmd.getColumnName(i), rs.getObject(i)); } //如有多條記錄,取第一條。 break; } return map; } catch (Exception e) { e.printStackTrace(); } finally { closeQuery(rs); } return null; } /** * 初始化鏈接 */ private void initConnection() { try { //local conn = DriverManager.getConnection("jdbc:phoenix:192.168.1.220"); } catch (Exception e) { e.printStackTrace(); } } /** * 功能介紹:關閉更新資源 */ private void closeUpdate() { try { if (ps != null) { ps.close(); } if (conn != null) { conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } /** * @param rs 功能介紹:關閉查詢資源 */ private void closeQuery(ResultSet rs) { try { if (rs != null) { rs.close(); } if (ps != null) { ps.close(); } if (conn != null) { conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } }