封装好的MAP工具类和HBASE工具类
时间:2022-04-27
本文章向大家介绍封装好的MAP工具类和HBASE工具类,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
package cn.gulf.util;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
public class PageData extends HashMap implements Map{
private static final long serialVersionUID = 1L;
Map map = null;
HttpServletRequest request;
public PageData(HttpServletRequest request){
this.request = request;
Map properties = request.getParameterMap();
Map returnMap = new HashMap();
Iterator entries = properties.entrySet().iterator();
Map.Entry entry;
String name = "";
String value = "";
while (entries.hasNext()) {
entry = (Map.Entry) entries.next();
name = (String) entry.getKey();
Object valueObj = entry.getValue();
if(null == valueObj){
value = "";
}else if(valueObj instanceof String[]){
String[] values = (String[])valueObj;
for(int i=0;i<values.length;i++){
value = values[i] + ",";
}
value = value.substring(0, value.length()-1);
}else{
value = valueObj.toString();
}
returnMap.put(name, value);
}
map = returnMap;
}
public PageData() {
map = new HashMap();
}
@Override
public Object get(Object key) {
Object obj = null;
if(map.get(key) instanceof Object[]) {
Object[] arr = (Object[])map.get(key);
obj = request == null ? arr:(request.getParameter((String)key) == null ? arr:arr[0]);
} else {
obj = map.get(key);
}
return obj;
}
public String getString(Object key) {
return (String)get(key);
}
@SuppressWarnings("unchecked")
@Override
public Object put(Object key, Object value) {
return map.put(key, value);
}
@Override
public Object remove(Object key) {
return map.remove(key);
}
public void clear() {
map.clear();
}
public boolean containsKey(Object key) {
// TODO Auto-generated method stub
return map.containsKey(key);
}
public boolean containsValue(Object value) {
// TODO Auto-generated method stub
return map.containsValue(value);
}
public Set entrySet() {
// TODO Auto-generated method stub
return map.entrySet();
}
public boolean isEmpty() {
// TODO Auto-generated method stub
return map.isEmpty();
}
public Set keySet() {
// TODO Auto-generated method stub
return map.keySet();
}
@SuppressWarnings("unchecked")
public void putAll(Map t) {
// TODO Auto-generated method stub
map.putAll(t);
}
public int size() {
// TODO Auto-generated method stub
return map.size();
}
public Collection values() {
// TODO Auto-generated method stub
return map.values();
}
}
package cn.gulf.repository;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import org.apache.hadoop.hbase.client.Delete;
import org.apache.hadoop.hbase.client.HTableInterface;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.filter.Filter;
import org.apache.hadoop.hbase.filter.PrefixFilter;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.log4j.Logger;
import org.springframework.beans.BeanWrapper;
import org.springframework.beans.BeanWrapperImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.hadoop.hbase.HbaseTemplate;
import org.springframework.data.hadoop.hbase.RowMapper;
import org.springframework.data.hadoop.hbase.TableCallback;
import org.springframework.stereotype.Repository;
import cn.gulf.PageData;
@Repository
public class HbaseQueryDao {
Logger logger = Logger.getLogger(HbaseQueryDao.class);
private String columnFamily = "columns";
public String getColumnFamily() {
return columnFamily;
}
public void setColumnFamily(String columnFamily) {
this.columnFamily = columnFamily;
}
@Autowired
private HbaseTemplate hbaseTemplate;
public <T> T queryForBeanByRowKey(String tableName, String rowKey, final Class<T> beanType) {
logger.info("-----------------------HbaseQueryDao.queryForBeanByRowKey-----------------------------------");
logger.info("tableName:" + tableName + ",rowKey:" + rowKey);
logger.info("-----------------------HbaseQueryDao.queryForBeanByRowKey-----------------------------------");
return hbaseTemplate.get(tableName, rowKey, new RowMapper<T>() {
public T mapRow(Result result, int rowNum) throws Exception {
Map<byte[], byte[]> map = result.getFamilyMap(Bytes.toBytes(columnFamily));
T t = beanType.newInstance();
BeanWrapper beanWrapper = new BeanWrapperImpl(t);
for(Map.Entry<byte[], byte[]> entry : map.entrySet()){
beanWrapper.setPropertyValue(Bytes.toString(entry.getKey()),Bytes.toString(entry.getValue()));
}
return t;
}
});
}
/**
* 根据精确的rowKey查询
* @param tableName
* @param rowKey
* @return
*/
public Map<String, String> queryForMapByRowKey(String tableName, String rowKey) {
logger.info("-----------------------HbaseQueryDao.queryForMapByRowKey-----------------------------------");
logger.info("tableName:" + tableName + ",rowKey:" + rowKey);
logger.info("-----------------------HbaseQueryDao.queryForMapByRowKey-----------------------------------");
return hbaseTemplate.get(tableName, rowKey, new RowMapper<Map<String, String>>() {
public Map<String, String> mapRow(Result result, int rowNum) throws Exception {
Map<byte[], byte[]> mapColumn = result.getFamilyMap(Bytes.toBytes(columnFamily));
Map<String, String> map = new HashMap<String, String>();
for(Map.Entry<byte[], byte[]> entry : mapColumn.entrySet()){
map.put(Bytes.toString(entry.getKey()),Bytes.toString(entry.getValue()));
}
return map;
}
});
}
/**
* 根据startRow列表
* @param tableName
* @param startRow
* @param stopRow
* @return
*/
public List<PageData> queryForListByScanRange(String tableName, String startRow, String stopRow) {
logger.info("-----------------------HbaseQueryDao.queryForListByScanRange-----------------------------------");
logger.info("tableName:" + tableName + ",startRow:" + startRow+ ",stopRow:" + stopRow);
logger.info("-----------------------HbaseQueryDao.queryForListByScanRange-----------------------------------");
Scan scan = new Scan();
if (startRow != null) {
scan.setStartRow(Bytes.toBytes(startRow));
} else {
scan.setStartRow(Bytes.toBytes(""));
}
if (stopRow != null) {
scan.setStopRow(Bytes.toBytes(stopRow));
} else {
scan.setStopRow(Bytes.toBytes(""));
}
Filter pf = new PrefixFilter(Bytes.toBytes(startRow));
scan.setFilter(pf);
return hbaseTemplate.find(tableName, scan, new RowMapper<PageData>() {
public PageData mapRow(Result result, int rowNum) throws Exception {
Map<byte[], byte[]> mapColumn = result.getFamilyMap(Bytes.toBytes(columnFamily));
PageData map = new PageData();
for(Map.Entry<byte[], byte[]> entry : mapColumn.entrySet()){
map.put(Bytes.toString(entry.getKey()), Bytes.toString(entry.getValue()));
}
return map;
}
});
}
public void save(String tableName, String rowKey, Map<String,String> rowMap) {
for (Entry<String, String> en : rowMap.entrySet()) {
hbaseTemplate.put(tableName, rowKey, columnFamily, en.getKey(), Bytes.toBytes(en.getValue()));
}
}
public void delete(String tableName, final String rowKey) {
hbaseTemplate.execute(tableName, new TableCallback<Boolean>() {
public Boolean doInTable(HTableInterface table) throws Throwable {
boolean flag = false;
try{
List<Delete> list = new ArrayList<Delete>();
Delete d1 = new Delete(rowKey.getBytes());
list.add(d1);
table.delete(list);
flag = true;
}catch(Exception e){
e.printStackTrace();
}
return flag;
}
});
}
}
- 我的HTML总结之常用基础便签
- php性能监测模块XHProf
- php dirname(__FILE__) 获取当前文件的绝对路径
- 洛谷P2939 [USACO09FEB]改造路Revamping Trails(最短路)
- 微信公众平台开发接口PHP SDK完整版
- 我的HTML总结之HTML发展史
- BZOJ 4152: [AMPPZ2014]The Captain(最短路)
- js获取div编辑框,textarea,input text的光标位置,兼容FF和IE
- BZOJ 4289: PA2012 Tax(最短路)
- php QR Code二维码生成类
- BZOJ 3714: [PA2014]Kuglarz(最小生成树)
- 我的HTML总结之表单
- php 二维码生成类
- HDU 2516 取石子游戏(斐波那契博弈)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 偶数的平方和,奇数的立方和
- 尚学堂-马士兵-专题-正则表达式
- 堆排序(HeapSort)之java实现
- 大话设计模式--第一章 简单工厂设计模式
- springMVC-MyBatis-Mysql 环境下, 返回时间格式不是指定格式
- 大话设计模式--第二章 策略设计模式
- 大话设计模式--第六章 装饰模式
- 大话设计模式--第七章 代理模式
- 数据库优化
- 获取jar包内部的资源文件
- Mac上sonar插件的安装及使用
- 一个ip, 两个域名, 两个ssl, 访问多个不同的项目
- 直接插入排序法——java语言实现
- Spring-boot构建多模块依赖工程时,maven打包异常:程序包xxx不存在
- spring boot使用注解的方式引入mybatis的SqlSessionDaoSupport