自己动手实现简单对象关系库之概述

来源:互联网 发布:mac怎么在pdf上写字 编辑:程序博客网 时间:2024/05/13 13:26

自己动手实现简单对象关系库

1. 对象关系库的出现

假如存在用户user数据库表

键名 描述 id 用户唯一主键 name 用户名称 password 密码 height 身高

存在User类与之对应

public class User{    private int id;    private String name;    private String password;    private float height;    ...//省略了setter函数}

则每次从数据库中查询所有user时会进行如下操作

List<User> list=new LinkedList<>();Connection conn=...;//获取一个连接Statement statement=conn.createStatement();ResultSet rs=statement.executeQuery("select * from user");while(rs.next())(    User user=new User();    user.setID(rs.getInt("id"));    user.setName(rs.getString("name"));    user.setPassword(rs.getString("password"));    user.setHeight(rs.getFloat("height"));    list.add(user);}... //Statement和ResultSet等资源的释放conn.close();

大家会发现,我们需要从数据库查询的ResultSet中一个一个生成User,还要把ResultSet的值一个一个手动插入User实例中,而且int,String,float之类不同的类型ResultSet的调用方法还不一样,得自己一个一个写,这样子是不是很繁琐。有没有一种方法能够把数据库里面的数据自动生成Java的对象

Database database=...;//我们把类的信息告诉database,它就能自动从数据库种读取数据并生成指定的对象集合返回给我们List<User> list=database.queryList(User.class);database.close();

上面代码描述的就是一个简单的对象关系库

2. 简单对象关系库的功能

对象关系库就是为了简化服务程序对数据库的操作,把对数据库的操作改变成对Java对象的操作。
我们实现的简单对象关系库应当具有以下功能

public interface IDatabase{    //从数据库中查询出所有T对象,放到List中    <T> List<T> queryList(Class<T> clazz);    //从数据库中查询出所有T对象,放到Map中,主键为T对象的唯一主键    <T> Map<?,T> queryMap(Class<T> clazz);    //向数据库中插入T对象,并设定插入的时候是否带主键,返回插入数据后的主键    <T> int insert(T bean,boolean hasPrimaryKey);    //向数据库种插入T对象集合,并设定插入的时候是否带主键    <T> int insert(Collection<T> collection,boolean hasPrimaryKey);    //从数据库中刷新当前对象的属性    <T> void refresh(T bean);    //将对象的属性更新到数据库中    <T> void update(T bean);    //判定该对象是否在数据库中存在,判定依据为主键    <T> boolean isExists(T bean);    //判定该对象是否在数据库中存在,并且每个属性都相等    <T> boolean isStrongExists(T bean);    //为该类创建数据库表    <T> boolean createTable(Class<T> clazz);}

以上我们即将实现的功能就包含了对Java对象的基本增删改查
接下来讲到的是如何把Java对象转化成数据库里面的数据

0 0