利用反射技术将查询结果封装为对象
来源:互联网 发布:源码社区uuv9 编辑:程序博客网 时间:2024/04/30 01:03
public class ORMTest extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //创建sql语句 String sql = "select username as Username,password as Password from user where id<?"; //创建个数组,用于给sql语句中的sql赋值 Object obj[] = new Object[]{1020}; try { //调用getObject方法得到一个Object对象的集合 List<Object> list = getObject(sql, obj, User.class); //将list存在request域中 request.setAttribute("list", list); //转发到index.jsp页面 request.getRequestDispatcher("/index.jsp").forward(request, response); } catch (InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { e.printStackTrace(); } } static List<Object> getObject(String sql,Object obj[],Class clazz) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException{ Connection conn=null; PreparedStatement ps = null; ResultSet rs = null; JDBCUtils utils = JDBCUtils.getInstance(); List<Object> list = new ArrayList<>(); try { conn = utils.getConnection(); ps = conn.prepareStatement(sql); //获取参数的元数据 ParameterMetaData pmd = ps.getParameterMetaData(); //获取?个数 int count = pmd.getParameterCount(); //将数组中的元素对应的赋值给sql中的? for(int i=1;i<=count;i++){ ps.setObject(i, obj[i-1]); } //执行sql rs=ps.executeQuery(); //得到传进来的Bean的所有方法 Method ms[] = clazz.getMethods(); //遍历结果集 while(rs.next()){ //得到结果集元数据 ResultSetMetaData rsmd = rs.getMetaData(); //得到一个结果集的列数 int columnCount = rsmd.getColumnCount(); //得到bean的实例对象 Object object = clazz.newInstance(); //遍历结果集的列 for(int i=1;i<=columnCount;i++){ String columnLabel =rsmd.getColumnLabel(i);//得到列的别名 //得到别名后 可以得到这个列的bean的set方法 String methodName = "set"+columnLabel; //遍历bean的所有方法 for (Method method : ms) { //如果有和这个列的set方法相同的方法 if(method.getName().equals(methodName)){ //就将数据库查出来的这个列的值付给这个bean method.invoke(object, rs.getObject(columnLabel)); } } } //将这个bean添加到集合中 list.add(object); } } catch (SQLException e) { e.printStackTrace(); }finally{ utils.free(conn, ps, rs); } return list; }}//beanpublic class User { public User() { } public int id; public String username; public String password; public String sex; public String age; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } @Override public String toString() { return "id="+this.id+"username="+this.username+"password="+this.password +"age="+this.age+"sex:"+this.sex; }}
0 0
- 利用反射技术将查询结果封装为对象
- JDBC_利用Java反射技术将查询结果封装为对象
- JDBC之利用反射技术将查询结果封装为对象
- java_jdbc_反射技术将查询结果封装为对象
- 反射3:利用java反射技术将查询结果封装成对象
- 通过JAVA反射实现简单的ORM,将查询结果封装为对象
- 利用java反射将结果集封装成为对象和对象集合
- 第三十章 利用结果集元数据将查询结果封装为map
- java_jdbc_利用结果集元数据将查询结果封装为map_MetaData
- 利用结果集元数据将查询对象封装成map
- 根据反射将数据库查询结果Datatable,转换为对应的Model类实体对象
- 利用java反射将map值封装到对象中
- hibnernate 将sql结果集封装为实体对象
- 利用结果集元数据将查询结果封装成Map
- 利用java反射机制将Map转换为Bean对象
- 利用Reflection反射将对象转化为 List和Model
- 通过结果集元数据将查询结果封装为Map
- 利用java反射机制,将数据库结果集封装成对象
- ios pch的正确使用
- oracle中如何对字符串进行去除空格的方法
- bzoj 2096: [Poi2010]Pilots 单调队列
- css选择器的优先级
- 蓝桥杯:算法训练 最大的算式
- 利用反射技术将查询结果封装为对象
- Unity3D 从入门到放弃(四)----打飞碟
- iPhone 设备目录结构
- Android开发架构规范
- JDBC为什么要使用PreparedStatement而不是Statement
- 今天遇到打包安装app提示“应用自定义权限重名(签名证书不一致)”
- Semantic Evaluation
- poi导出.xls格式excel
- Shell脚本test命令使用总结