自己动手实现简单对象关系库之概述
来源:互联网 发布:mac怎么在pdf上写字 编辑:程序博客网 时间:2024/05/13 13:26
自己动手实现简单对象关系库
1. 对象关系库的出现
假如存在用户user数据库表
存在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
- 自己动手实现简单对象关系库之概述
- 自己动手实现简单对象关系库谈到异常的处理与抛出
- 自己实现简单对象关系库之Database的实现
- 自己实现简单对象关系库之反射和注解
- 自己实现简单对象关系库之更多功能
- 自己实现简单对象关系库之缓存类SQLField,SQLClass,SQLCache
- 自己动手简单实现CountDownLatch
- 自己动手实现简单权限控制
- 自己动手实现简单权限控制
- 自己动手实现简单权限控制
- 自己动手实现Android平台手写体数字识别之概述和训练集准备
- spring 之 自己动手实现IOC
- 自己动手实现一个简单的String类
- 自己动手实现一个简单的Ajax
- 【自己动手】实现简单的C++ smart pointer
- 【自己动手】实现简单的C++ smart pointer
- 自己动手实现简单的线程池
- 自己动手实现一个简单c编译器
- Spring框架学习(8):通过工厂方法配置bean
- 设计模式之代理模式
- 设计模式原则—组合重用原则
- BZOJ 1221: [HNOI2001] 软件开发 最小费用最大流
- 【LeetCode笔记】Construct Binary Tree from Preorder and Inorder Traversal 前序、中序还原二叉树
- 自己动手实现简单对象关系库之概述
- 二、SpringApplication
- POJ1789 Truck History
- Linux内核线性地址空间布局
- SAP HANA关于触发器的深入理解
- QBC对数据库查询
- CodeForces
- Unsupervised dimensionality reduction via PCA
- bzoj 1937: [Shoi2004]Mst 最小生成树 (KM算法)