JavaBean指实体类,主要用于映射关系型数据库表,遵守下面四个构建规范
1.属性私有
2.属性拥有公开对应的get和set方法
3.拥有一个无参构造函数
4.实现序列化接口
在于关系型数据库的映射关系(ORM)中:
表单对应实体类
元组对应实体类对象
属性对应实体类的属性
JavaBean的实例化操作
将从数据库中读取的ResultSet集合赋值给实体类的时候,一般方法是一行中对每个属性调用set方法,如果表单中的数据多了,就需要写出冗长并且费时间的代码,下面探索一些方便的方法。
利用反射实例化
public static User getUser(String username) throws SQLException, ClassNotFoundException, NoSuchFieldException, InstantiationException, IllegalAccessException {
//获取实体类的反射
Class<?> clazz = Class.forName("POJO.User");
//object为要返回的结果
Object object=null;
object=clazz.newInstance();
//sql操作
String sql="select * from user where userCode=?";
Object[] objects=new Object[1];
objects[0]=username;
ResultSet resultSet=executeQuery(sql,objects);
//metadata为结构集中的属性集合,getColumnCount方法可以获取属性个数
ResultSetMetaData metaData = resultSet.getMetaData();
while(resultSet.next()){
for (int i = 0; i < metaData.getColumnCount(); i++) {
//获取属性名字
String name=metaData.getColumnName(i+1);
//实体类属性都是私有的,所以需要setAccessible为true
Field field=clazz.getDeclaredField(name);
field.setAccessible(true);
field.set(object,resultSet.getObject(name));
}
}
return (User) object;
}