不多说了 直接上代码
public static List resultSetToList(ResultSet rs) throws java.sql.SQLException{
if(rs==null){
return null;
}
ResultSetMetaData md = rs.getMetaData();
int columnCount = md.getColumnCount();
List list = new ArrayList();
Map rowData;
while (rs.next()){
rowData = new HashMap(columnCount);
for (int i=1; i<=columnCount; i++){
rowData.put(md.getColumnName(i),rs.getObject(i));
}
list.add(rowData);
}
return list;
}
首先将ResultSet封装成list 而每条记录对应一个实体Map
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
/**
* <p>Title:属性封装类</p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2008</p>
*
*/
public class BeanUtils {
/**
*
* @param bean 需要封装的vo
* @param map 需要转换的map
* @return 已经封装好数据的vo(object)
*/
public static Object MapToBean(Object bean, Map map) {
Map methods = new HashMap();
Method m[] = bean.getClass().getMethods();
for (int i = 0; i < m.length; i++) {
Method method = m[i];
String methodName = method.getName().toUpperCase();
methods.put(methodName, method);
}
Iterator it = null;
String key = "";
it = map.keySet().iterator();
while (it.hasNext()) {
key = (String) it.next();
String name = "GET" + key.toUpperCase();
if (methods.containsKey(name)) {
Method setMethod = (Method) methods.get("SET" + key.toUpperCase());
try {
if(setMethod!=null){
Object[] obj=null;
obj=new Object[1];
obj[0]=map.get(key);
setMethod.invoke(bean, obj);
}
else{
continue;
}
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
}
return bean;
}
}
此方法是将上面查到的list作为参数 然后再将其list里面的map转换成相对性的pojo
假设查询的是student表 与之对应的pojo是Student类 那么调用方法如下:
首先查询数据 获取到resultset
然后
List retultList=resultSetToList(resultset);
遍历retultList 将list里面的Map都转换成pojo
Student stu=(Student)BeanUtils.MapToBean(new Student(),(Map)retultList.get(0));
注意:查询出来的字段名要和pojo中的属性名相同 若查询出age字段 pojo中需有getAge和setAge方法 方法名大小写不限
每天记录一点 好记星不如烂笔头
分享到:
相关推荐
客服看到给我删掉,我只是想收藏这篇文章,这是复制别人的,怕侵权。...相对而言,Hibernate对JDBC的封装程度还是比较高的,我们已经不需要写SQL,只要使用HQL语言就可以了。 使用Hibernate进行编程有以下好处:
1. 简化了JDBC编程:MyBatis通过封装JDBC的操作,使开发者不需要关心复杂的JDBC编程细节,例如加载数据库驱动、创建数据库连接、创建Statement对象、设置参数、执行SQL语句等。 2. 提高了开发效率:MyBatis提供了一...
第十五节 jdbc轻量级封装 88 15.1 将结果集封装为Map 88 15.1.1 ResultSetMetaData演示 88 15.1.2解决多行记录的问题 89 15.1.3 Map结果集的封装 90 15.2 将结果集封装为对象 91 15.2.1 user表POJO的编写 91 15.2.2 ...
如果能够将数据库记录自动封装到 POJO 对象中,将大大简化这一过程,提高代码的灵活性和可维护性。 #### 三、MyBatis 解决方案 针对上述 JDBC 编程存在的问题,MyBatis 提供了以下解决方案: 1. **数据库连接管理...
ORM:使用元数据信息来描述对象和数据库之间的关系,并且能够自动实现java中持久化对象到关系型数据库中表的映射 脏检查:自动对缓存中的数据进行检查,并且选择在合适的时机和数据库之间进行交互,以保持数据的...
本文将详细探讨如何使用JDBC(Java Database Connectivity)技术来实现这一目标,涉及的关键知识点包括数据库连接、表字段对应、对象封装以及批量导出数据等。 首先,JDBC是Java语言访问数据库的标准接口,它提供了...
纵观目前主流的 ORM(对象关系映射),无论 Hibernate还是Apache OJB,都对数据库结构提供了较为完整的封装,提供了从POJO到数据库表的全套映射机制。程序员往往只需定义好了POJO 到数据库表的映射关系,即可通过 ...
- **自动结果集映射**:MyBatis 能够自动将查询结果映射到 Java 对象,极大地减少了手动处理 ResultSet 的工作量。 #### 五、MyBatis 与其他框架的集成 - **与 Spring 和 SpringMVC 的集成** - 在实际项目中,...
这些功能通常通过JavaBeans或POJO(Plain Old Java Object)类来封装,便于在各层之间传递数据。 数据层则主要负责与数据库的交互。这里采用的是MySQL数据库,MySQL是一款广泛使用的开源关系型数据库管理系统,以其...
Mybatis框架会根据映射文件的配置,自动将数据库查询结果集中的数据填充到这些POJO对象中,也可以根据POJO对象中的值来构建SQL语句并执行。 Mybatis的使用过程中,开发者可以通过定义SQL映射文件来实现对数据库的...
- **结果集映射**:自动将 SQL 查询的结果集映射到 Java 对象,大大减少了手工处理 ResultSet 的工作量。 - **动态 SQL**:支持基于条件的 SQL 生成,可以方便地根据不同的条件动态生成 SQL 语句。 #### 与 ...
- **结果集处理**:转换数据库查询结果为Java对象,如使用ResultSet映射到POJO(Plain Old Java Object)。 2. **原理解析**: - **JDBC基础**:该框架的基础是Java Database Connectivity (JDBC),它提供了与...
开发者通常会使用Connection、Statement、PreparedStatement和ResultSet等JDBC接口。 5. **DAO(Data Access Object)设计模式**:为了更好地封装数据库操作,通常会创建DAO层。比如ch11或ch14可能展示了如何通过...
标题“java_students_db”暗示了这是一个与Java编程语言相关的数据库,可能包含了关于学生信息的数据存储和管理。描述中的“java_students_db”进一步确认了这一点,它可能是用来教学或实践Java数据库连接、SQL查询...
- Connection、Statement、ResultSet等接口的使用。 2. **数据库交互**: - SQL语句的执行。 - 结果集的处理。 #### Java Web技术 1. **Servlet**: - Servlet生命周期的理解。 - HttpServletRequest与...
1. **Create(创建)**:在Java中,创建新记录通常涉及构建一个Java对象(POJO或Entity),然后使用JDBC的`PreparedStatement`或者ORM框架的方法将这个对象持久化到数据库中。比如,使用Hibernate,我们可以调用`...
下面我们将详细探讨这个过程中的关键知识点。 首先,**导包**是项目启动的第一步。在构建Java Web应用时,我们需要引入必要的库,比如MySQL的JDBC驱动,以便进行数据库交互。这些库通常可以从Maven仓库(Maven ...
前面已经讲到用接口的方式编程。如果不一致就会出错,这一章主要在上一讲基于接口编程的基础上完成如下事情: 1. 用 mybatis 查询数据,包括列表 2. 用 mybatis 增加数据 3. 用 mybatis 更新数据. 4. 用 mybatis 删除...