Hbase+JAVAWeb实现超市仓库管理系统

Hbase结合JAVAWeb的超市仓库管理系统

项目来源

Hbase期末小项目,结合之前学习的Java基础;通过API对Hbase操作,结合JAVAWeb将结果展示于页面上,通过页面按钮实现增删改查功能。

项目用到的技术

1.Hbase基础知识,增删改查,以及API操作

2.JAVAWeb基础知识,了解前后端数据如何传输,何种形式

3.一定的HTML前端基础和JavaScript基础

4.AJAX前后端数据交互

项目目录结构

在这里插入图片描述

hbase里面包括Hbase的工具类HbseUtil以及实体类HbaseDemo

具体实现过程

Hbase操作
Hbase表结构
行键(rowkey) 列族1(info1) 列族2(info2)
rowkey name type weight place price
0001 football sports 105g zhejiang 205
Hbase实现增加功能

后端java代码

// 添加数据
public void add(String rowkey, String name, String type, String place, String price, String weight) throws Exception {
   
        //调用HbaseUtil工具类
        boolean r1=HbaseUtil.Insert_Data(tablename,rowkey,"info1","name",name);
        boolean r2=HbaseUtil.Insert_Data(tablename,rowkey,"info1","type",type);
        boolean r3=HbaseUtil.Insert_Data(tablename,rowkey,"info2","place",place);
        boolean r4=HbaseUtil.Insert_Data(tablename,rowkey,"info2","price",price);
        boolean r5=HbaseUtil.Insert_Data(tablename,rowkey,"info2","weight",weight);
        if(r1&&r2&&r3&r4&r5){
   
            System.out.println("添加成功!");
        }
        else{
   
            System.out.println("添加失败");
        }
    }
Hbase实现删除功能

后端Java代码

//删除整行数据
public void delete_all(String rowkey) throws IOException {
   
        boolean r = HbaseUtil.Exec_DelData(tablename,rowkey);
    }

// 删除一行数据的某列,如name列等
public void delete_column(String rowkey, String column) throws IOException {
   
        if (column.equals("name") || column.equals("type")){
   
            boolean r = HbaseUtil.Exec_DelData(tablename, rowkey, "info1",column);
        }
        if (column.equals("place") || column.equals("price") || column.equals("weight")){
   
            boolean r2 = HbaseUtil.Exec_DelData(tablename, rowkey,"info2",column);
        }

    }
Hbase实现修改功能

Hbase修改可以直接调用增加函数,产生新的时间戳,相当于修改

Hbase实现查询功能

主要应用Hbase的过滤器实现各种查询

比如查询行键以XXX开头的数据

// 查询行键以**开头数据
public List<JSONObject> get_byrowkey1(String str) throws IOException {
   
       //创建scan扫描对象
        Scan scan = new Scan();
       //设置过滤器
        Filter filter = new RowFilter(CompareFilter.CompareOp.EQUAL, new 		                 BinaryPrefixComparator(Bytes.toBytes(str)));
        //为scan对象设置过滤器
        scan.setFilter(filter);
    	//表对象实列化
        Table table=HbaseUtil.GetConnection().getTable(TableName.valueOf(tablename));
    	//结果集
        ResultScanner results=table.getScanner(scan);
    	//查询到的数据不止一个,存放到列表中
        List<JSONObject> mylist = new ArrayList<>();
        for (Result result : results){
   
            Cell[] cells = result.rawCells();
            //将结果转换为JSON格式,方面后续javaweb操作
            JSONObject object = new JSONObject();
            for (Cell cell : cells){
                                object.put(Bytes.toString(CellUtil.cloneQualifier(cell)),Bytes.toString(CellUtil.cloneValue(cell)));
                object.put("rowkey",Bytes.toString(CellUtil.cloneRow(cell)));
            }
            mylist.add(object);
        }
        return mylist;
    }

多个过滤器结合查询

如查询姓名是XXX,产地为XXX的数据

// 查询name为XXX,产地为XXX数据
    public List<JSONObject> select_two(String value1, String value2) throws IOException {
   
        Scan scan = new Scan();
        SingleColumnValueFilter singleColumnValueFilter1 = new SingleColumnValueFilter(Bytes.toBytes("info1"), Bytes.toBytes("name"), CompareFilter.CompareOp.EQUAL, new BinaryComparator(Bytes.toBytes(value1)));
        SingleColumnValueFilter singleColumnValueFilter2 = new SingleColumnValueFilter(Bytes.toBytes("info2"), Bytes.toBytes("place"), CompareFilter.CompareOp.EQUAL, new BinaryComparator(Bytes.toBytes(value2)));
        ArrayList<Filter> filters = new ArrayList<>();
        filters.add(singleColumnValueFilter1);
        filters.add(singleColumnValueFilter2);
        // 多个过滤器用集合存放

        // And关系MUST_PASS_ALL OR关系MUST_PASS_ONE
        Filter filterList = new FilterList(FilterList.Operator.MUST_PASS_ALL,filters);
        // 为scan设置过滤器
        scan.setFilter(filterList);
        Table table=HbaseUtil.GetConnection().getTable(TableName.valueOf(tablename));
        ResultScanner results=table.getScanner(scan);
        List<JSONObject> mylist = new ArrayList<>();
        for (Result result : results){
   
            Cell[] cells 
  • 4
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值