前几天面试,被问到java从数据库拿到的数据什么形式?怎么转换成对象?
本人菜鸟一个,只知道通过Mybatis框架返回一个对象等。网上没找到相关的帖子。
求教各位大神,谢谢!!!
得到的是一个ResultSet结果集,你可以通过循环结果集来获取数据,并且保存到你想保存的对象中。举个简单例子,一个查询所有学生的方法:
public List getAllStudent(){
Connection cn=null;
PreparedStatement st=null;
ResultSet rs=null;
List list=new ArrayList();
try {
cn=DBUtils.getConnection();
String sql="select * from student";
st=cn.prepareStatement(sql);
//设置参数
rs=st.executeQuery();
while(rs.next()){
Student stu=new Student();
stu.setSno(rs.getInt("sno"));
stu.setSname(rs.getString("sname"));
stu.setAge(rs.getInt("age"));
list.add(stu);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally{
//7.释放资源
DBUtils.closeAll(cn, st, null);
}
return list;
}
不知道你是不是这个意思,想要这种的答案。
你可以使用List呀,把取得的所有的记录组织成对象然后放进List里面,使用的时候在从里面取就是了。如果使用的Hibernian的话那么Hibernian里面的查询都可以返回一个List集合。直接用就是了
程序是不可能直接返回个对象给你的,假如数据库是别人单独开发,而你又需要对接数据库,那么人家怎么知道你用什么对象去包装数据呢?那么这方面数据库交互时只能给你返回一组含键值对的集合,至于数据如何使用看你自己程序怎么去设计,实体如何包装。不管你用什么框架也好,最终包装数据都是你自己定义依赖的。
通过resultType 指定查询的结果是Employee 类型的数据
只需要指定resultType 的类型,MyBatis 会自动将查询的结果映射成JavaBean 中的属性
select * from t_employee where id = #{id}
类似这个,resultType是一个javabean
程序是不可能直接返回个对象给你的,假如数据库是别人单独开发,而你又需要对接数据库,那么人家怎么知道你用什么对象去包装数据呢?那么这方面数据库交互时只能给你返回一组含键值对的集合,至于数据如何使用看你自己程序怎么去设计,实体如何包装。不管你用什么框架也好,最终包装数据都是你自己定义依赖的。
程序是不可能直接返回个对象给你的,假如数据库是别人单独开发,而你又需要对接数据库,那么人家怎么知道你用什么对象去包装数据呢?那么这方面数据库交互时只能给你返回一组含键值对的集合,至于数据如何使用看你自己程序怎么去设计,实体如何包装。不管你用什么框架也好,最终包装数据都是你自己定义依赖的。
拿到的是一个结果集,通过映射封装成对象
比如jdbc返回的resultSet是你查询语句中 select a,b,c,d from table; a,b,c,d的集合,你知道数据库中a,b,c,d的类型,那么你就可以result.getint(index),result.getString(index)这样子。
你需要了解ORM映射,Hibernate和Mybaties都是基于JDBC来做的,从JDBC查询结果集中就可以看出原生的返回值是什么样子的。
其实理解的在简单的就是直接反射Bean,比如Mybaties 是需要配置表字段,类属性映射的
得到的是一个结果记录集