通过Map集合存储数据
1、使用场景
多次访问数据库,但查询的数据结果集是不变的。
比如:1、添加记录到数据库
这条记录中有一个唯一标识,这时候需要查询数据库,进行判断是否数据库中已经存在该值。
2、添加数据时,给的是名称,但要求存的是主键,需要到另一个表去查询这些数据。
2、使用方法
// Map<key, value> map = new HashMap<key, value>();
// key是唯一的,后面加入的key会把相同的前面的值覆盖
// key和value 的数据类型是Object
Map<Object, Object> map = new HashMap<Object, Object>();// jdk版本不同,new HashMap()初始化不一样
...
// 把查出来的数据存放到map中
// 需要的时候再用对应的值取出
// 常用的方法
map.getKey();// 通过key获取value,返回value值
map.containsKey(key);// 是否包含key,返回true/false
map.containsValue(value);// 是否包含value,返回true/false
// 遍历
for(Map.Entry<Object, Object> m: map.entrySet()){
Object = m.getkey();// 获取key
Object = m.getValue();// 获取value
}
...
3、举例说明
班上来了几位新同学,需要把同学的信息添加到学生表里面
学号作为唯一标识,添加数据的时候就要校验
// 语句
String sql_query= "select 学号 from student";
String sql_insert= "";
// 方法调用
QueryValue(sql_query);
// 存值
Map<Integer, Object> map = new HashMap<Object, Object>();
for(int i = 0; i< QueryValue(sql_query).length){
...
//map.put(key,value);
map.put(i,queryValue[i]);
...
}
// 取值判定,value 表示要添加的学号
if(map.containsValue(value)){
throw new Exception("数据表中已经存在这个学号!\n"+ value);// 抛出错误,中断执行
}else{
InsertValue(sql_insert);// 添加数据,一般也要做异常处理
}