手动封装HbaseTemplate mapper类

本文讲述了在使用Spring Boot进行Hbase操作时,针对HbaseTemplate的不足进行了手动封装,以解决插入更新操作繁琐和查询结果转换为Java Bean复杂的问题。通过创建自定义的Put对象扩展和实现RowMapper,简化了代码,提高了代码的整洁度和可维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

最近因为业务关系,用到了Hbase,因为用的是Spring boot框架 ,所以自然而然就用到了spring封装的HbaseTemplate工具类。然而HbaseTemplate封装的代码实在比较糟糕,出了一些基本的CRUD操作之外并没有给我们提供太多便利之处。先来看看痛处:
痛处一:
- 最基本的查询操作(以下只是demo演示):

 class UserInfo{
   
   
     string name;
     string password;
 }
 public void putUserInfo(UserInfo userInfo) {
    hBaseTemplate.execute(TABLE_NAME, (table) -> {
      //根据rowKey定义一个put对象,可用作插入和更新
      Put put = new Put(Bytes.toBytes(rowKey));
     //name是否为空
      if(userInfo.name!=null){
      put.addColumn(COLUMN_FAMILY_NAME.getBytes(), Bytes.toBytes(COLUMN_RAW_DATA),Bytes.toBytes(userInfo.name));
      }
      //password是否为空
      if(userInfo.password!=null){
      put.addColumn(COLUMN_FAMILY_NAME.getBytes(), Bytes.toBytes(COLUMN_RAW_DATA),Bytes.toBytes(userInfo.password));
      }
      table.put(put);
      return true;
    });
  }

相信大家也看出来了,如果待插入的对象有很多字段呢?还要逐个写if语句来判读非空么?明显违背了Java8大力提倡的代码简洁之道。于是,个人封装了一个插入更新模版类(简单的对Put对象的一个扩展):

//继承并扩展Put对象
public class PutExtension extends Put {
   
   

  String columnFamilyName = "demo";

  public PutExtension(String columnFamilyName, byte[] row) {
    super(row);
    this.columnFamilyName = columnFamilyName;
  }

  public
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值