Guava-Collections-Table

Guava-Collections-Table,第1张

Guava-Collections-Table 简介

        在公司开发项目过程中,遇到了这样一个需求:不同的中间件(redis,mysql,kafka...)有不同的字段,存储在不同的表中,需要向数据库表中添加对应信息.用到了Guava中的Table以及@insertProvide,根据相关内容写了如下Demo

Table详细介绍
    @Test
    public void testHashTable(){
        //创建一个三维的table
        Table table = HashbasedTable.create();
        //Table
        table.put("MYSQL","MYSQL需要插入的字段","MYSQL插入的值");
        table.put("REDIS","REDIS需要插入的字段","REDIS插入的值");
        table.put("KAFKA","KAFKA需要插入的字段","KAFKA插入的值");
        //打印出的格式{R={C=V}}
        System.out.println(table);
        //通过table.row(R)可以获得:{C=V}
        Map maps1 = table.row("MYSQL");
        System.out.println(maps1);
        //table.column():里面只能填列的C,可以得到其他两个值(R=V)
        Map maps2 = table.column("插入的值");
        System.out.println(maps2);
        //通过table.columnKeySet():可以得到所有的C的集合
        Set keySets =  table.columnKeySet();
        System.out.println(keySets);
        //通过table.containsColumn():判断是否包含列的C
        System.out.println(table.containsColumn("KAFKA"));
        //通过table.containsRow():判断是否包含R
        System.out.println(table.containsRow("KAFKA"));
        table.containsValue("插入的值");
        //通过table.contains():判断是否包含R和C
        System.out.println(table.contains("MYSQL", "需要插入的字段"));
        //得到的格式:[(R,C)=V,(R,C)=V,(R,C)=V]
        //Cell:可以直接得到对应的R,C,V
        Set> sets =  table.cellSet();
        for (Table.Cell set : sets) {
            //set是一个Cell实例
            System.out.println(set.getRowKey());
            System.out.println(set.getColumnKey());
            System.out.println(set.getValue());

        }
        //得到一个map>集合:{C={R=V}}
        System.out.println(table.columnMap());
        //得到一个map>集合:{R={C=V}}
        System.out.println(table.rowMap());
        //得到V集合
        System.out.println(table.values());
    }
应用场景
public class MiddlewareDaoSQL{
static final Table TABLE;
//静态代码块:一次加载
static{
	String MYSQL = "ID,NAME,VERSION,URL,USERNAME,PASSWORD";
	String KAFKA = "ID,NAME,VERSION,URL,USERNAME,PASSWORD,CLUSTERNAME,ADDRESS";
	
	String MYSQL_VALUE = "#{middle.id},#{middle.name},#{middle.version},#{middle.url},#{middle.userName},#{middle.passWord}";
	String KAFKA_VALUE = "#{middle.id},#{middle.name},#{middle.version},#{middle.url},#{middle.userName},#{middle.passWord},#{middle.clusterName},#{middle.address}";
	TABLE = HashbasedTable.create();
	TABLE.put("MYSQL",MYSQL,MYSQL_VALUE);
	TABLE.put("KAFKA",KAFKA,KAFKA_VALUE);
	}
    
	public String insertMiddle(Map map){
		String tableName = MapUtils.getStringValue(map,"tableName");
	    String middle = MapUtils.getStringValue(map,"middle");
		SQL sql = new SQL();
		sql.INSERT_INTO(tableName);
		if(TABLE.containsRow(tableName)){
			Map maps = TABLE.rowMap.get(tableName);
			for( Map.Entry entry : maps.entrySet()){
				sql.INTO_COLUMNS(entry.getKey());
				sql.INTO_VALUES(entry.getValue());
			
			}
		}
		return sql.toString();
	}
}

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5703495.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存