使用反射查询数据
来源:互联网 发布:卷积运算公式矩阵 编辑:程序博客网 时间:2024/05/19 18:39
1、使用反射调用实体类的set方法
public static <T> List<T> selectDb(Connection con, String sql, Class<T> cls, Object ...objects) throws Exception{if(con==null||sql==null||sql.trim().length()==0||cls==null){return null;}PreparedStatement pstmt = con.prepareStatement(sql);for(int i = 0; i < objects.length; i++){pstmt.setObject(i+1, objects[i]);}ResultSet rs = pstmt.executeQuery();List<T> list = new LinkedList<T>();while(rs.next()){ResultSetMetaData rsmd = rs.getMetaData();T t = cls.newInstance();for(int i = 0; i < rsmd.getColumnCount();i++){Object o = rs.getObject(rsmd.getColumnLabel(i+1));if(o==null){continue;}String columnName = rsmd.getColumnLabel(i+1);String methodName = "set"+columnName.replaceFirst(columnName.charAt(0)+"", (columnName.charAt(0)+"").toUpperCase());Method method = cls.getMethod(methodName,cls.getDeclaredField(columnName).getType());method.invoke(t, o);}list.add(t);}return list;}
2、使用反射调用preparedstantment的get方法
public static <T> List<T> put(ResultSet rs,Class<T> cls) throws Exception{List<T> list = new ArrayList<T>();Field[] fields = cls.getDeclaredFields();Class<? extends ResultSet> rsclass = ResultSet.class;while(rs.next()){T t = cls.newInstance();for(int i = 0; i < fields.length; i++){String fieldTypeName = fields[i].getType().getSimpleName();String setParaMethodName = "set"+fields[i].getName().substring(0, 1).toUpperCase()+fields[i].getName().substring(1);String rsMethodName = "get"+fieldTypeName.substring(0, 1).toUpperCase()+fieldTypeName.substring(1);Method rsMethod = rsclass.getDeclaredMethod(rsMethodName, String.class);Object obj = rsMethod.invoke(rs, fields[i].getName());Method setParaMethod = cls.getDeclaredMethod(setParaMethodName, fields[i].getType());setParaMethod.invoke(t, obj);}list.add(t);}return list;}
阅读全文
0 0
- 使用反射查询数据
- 使用元数据简化jdbc代码---查询操作(用到反射)
- 使用元数据简化jdbc代码---查询操作(用到反射)
- 利用反射封装数据查询操作
- jdbc查询引发一个思考(使用反射)
- 使用JDBC查询数据
- ProtocolBuffer + MySQL++实现消息反射查询返回数据
- ProtocolBuffer + MySQL++实现消息反射查询返回数据
- 使用反射来完成数据插入
- 使用子查询复制数据
- 使用nodejs sqlite3查询数据
- 【SSH】使用HQL查询数据
- 使用子查询检索数据
- 使用GreenDao添加数据-查询数据
- poi到处数据 使用反射机制 动态取字段数据
- 使用Bmob ---数据服务(提交数据,查询数据)
- 使用反射来应对数据实体类的变化
- Android解析Json数据(二)—使用反射机制
- java 中什么时候用抽象类,什么时候用 接口(面向对象的继承与多态)
- C++类和对象
- 解决部分华为,乐视手机听筒模式听不到声音问题
- 服务相关工具类
- udp_server
- 使用反射查询数据
- Struts2笔记05 action操作域对象
- 糟糕的内心独白-java工作怎么这么难找啊?
- windows程序设计——功能表及其他资源
- React-Native之手势进阶篇
- 2017/6/26 学习心得 jq节点操作
- 链表常见操作java实现一:链表初始化,求链表长度
- Mac disk清理工具
- dojo.declare/dojo.provide/dojo.require:JavaScript模块化管理工具