实现更新
先把需要修改的用户按id查询
- 接收参数,collection就是HashMap的values,这个values中只有id。因为查询需要把查询出的数据返回,这里对类作统一的写法,采用反射技术,传入参数是类的名称。
- 这里引用Java的范型T,需要定义类时加上范型T
public class JDBCUtils<T>
如果添加范型后。当前方法不能是静态方法。
实现查询,返回ResultSet的List当中的类型就是范型T。
- 接收的Collection是字符串,这需要参数转换,使用迭代器的方式。
- int index=0; Iterator<String> myiter=args.iterator(); while(myiter.hasNext()){ String item=myiter.next(); System.out.println(item); if(item.matches("^[0-9]+$") ){ ps.setInt(index+1,Integer.parseInt(item)); }else if(item.matches("^[0-9]+.[0-9]][0-9]$")){ ps.setDouble(index+1,Integer.parseInt(item)); }else{ ps.setString(index+1,item); } //保证PreparedStatement能够进行每一个参数的对应 index++; }
- 执行查询后,把查询结果封装在泛型对应的类.
循环出的查询结果中把实例化的对象放在ArrayList集合中。反射的实例化newInstance。
根据不同的类型获取不同的数据,注意String输出的类型是class java.lang.String。
- 每个属性构建set方法
通过getDeclaredMethod执行方法,后面跟属性名称,还有parameterType参数类型。
Method mymethod=myclass.getDeclaredMethod("setId",int.class);
采用invoke执行方法,invoke的第一个参数是对象,第二个参数的值。
mymethod.invoke(my_instance_class,22);
注意:使用范型T匹配任意一个类,一定类中加上范型T,在方法中引用范型T。
项目:
- 考虑把简单重复的形式用接口来实现.
比如数据库的增删改查(重复)
- 考虑应对场景:用户需求修改,程序员不断修改代码的需求.(开发模式)
- 考虑bug。修复出现的bug