在公司开发项目过程中,遇到了这样一个需求:不同的中间件(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 TableTABLE; //静态代码块:一次加载 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(); } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)