可能都想过封装jdbc达到简化开发代码、提高开发效率,于是我也想弄这么一个框架,天马行空的思考开始了,
主要针对简单而常用的的CRUD操作。
- 首先,我想简化的是开发者输入一sql我就能封装好查询结果,返回给开发者,也类似于开发者如下调用
/**
* @author:lyjilu
* @throws Exception
*/
public List<Row> findAll() throws Exception {
return super.findAll("select * from pop_dep");
}
就能取得查询的结果,Row表示每一行,具体查询代码块如下:
/**
* @author:lyjilu
* @param conn 数据库连接 @param sql 要查询的sql
* @throws Exception
*/
public static List<Row> find(Connection conn, String sql) {
long t1 = System.currentTimeMillis();
ResultSet rs = null;
PreparedStatement ps = null;
List<Row> list = null;
try {
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
ResultSetMetaData rsmd = rs.getMetaData();
int numberOfColumns = rsmd.getColumnCount();
Map<String, ColumnMeta> map = new HashMap<String, ColumnMeta>();
for (int i = 0; i < numberOfColumns; i++) {
ColumnMeta columnMata = new ColumnMeta(
rsmd.getColumnLabel(i + 1), 0,
rsmd.getColumnType(i + 1),
rsmd.getColumnTypeName(i + 1));
map.put(rsmd.getColumnLabel(i + 1), columnMata);
}
String label = null;
int type = 0;
list = new ArrayList<Row>();
while (rs.next()) {
Row row = new Row();
for (int i = 0; i < numberOfColumns; i++) {
label = rsmd.getColumnLabel(i + 1);
type = rsmd.getColumnType(i + 1);
Object obj = DaoUtil.getObjectByName(rs, label, type);
row.put(label, obj);
}
row.setColumnMetaMap(map);
list.add(row);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
DaoUtil.closeDao(rs, ps, conn);
}
long t2 = System.currentTimeMillis();
System.out.println(t2 - t1);
return list;
}
其中几个类:ColumnMeta 是简单的类似于ResultSetMetaData 类,
而Row是一个组合了HashMap的类,getObjectByName方法则是通过不同类型取得值的方法
看似查询方法这样封装就已经差不多了,由于本文主要是思考,所以具体代码就简化了。那么下面就想怎么添加和修改呢
2.添加或修改
由于不能确定用户输入的值插入到哪表,
第一考虑是用户输入表名,查询一次表,就能取得表的字段及字段类型等信息,然后设置进去,进行添加操作,由于这样会每次添加会查询一次数据库,并且,还得让开发者指定要插入的表,不够合理,抛弃
第二考虑是用户定义实体类,和数据库一一对应,用户传递过来的就是要保存的实体,那么就可以进行保存操作,可考虑到这里的时候,又不得不考虑几个问题,
1>用户传递过来的实体名,字段名,是不是和表中的一致,不一致会有问题,
2>设置值的时候,如果实体中是String,那么就必须用PreparedStatement.setString()等,综上,那么就必须要求开发者的实体名,字段,必须和数据库一一对应,并且字段类型也必须设置正确等,如果稍不留神,就将出错。
第三考虑是在第二考虑基础上,增加配置,即,实体对应数据中的哪表,字段对应什么类型等等。最后保存的时候查询配置文件中的定义,就能较好的完成添加或修改操作,但是这样就增加了开发者配置实体和数据库对应关系的工作量。,说到这里,是不是觉得挺熟悉,这不就是简化版的Hibernate吗?。
如果真的实现成第三考虑方案那样,那就会考虑到与数据库无关性,可能就是这样,HQL产生了吧,然后考虑到表间关系的复杂性,简化用户手动关联查询,于是在实体里面,就把外键关联的实体用Set(一对多是是Set<多的一方实体>)或另外的实体关联起来,于是就形成了查询一次全部查出吧,但是由于性能问题,就出现了LAZY 懒加载用以在不使用的情况下不查询出关联数据,以提高性能。
最后没去实现了添加修改,毕竟那基本就是Hibernate
为了防盗,注上本文地址原始地址:http://lyjilu.iteye.com/blog/1162171
分享到:
相关推荐
jdbc 操作oracle blob数据jdbc 操作oracle blob数据jdbc 操作oracle blob数据jdbc 操作oracle blob数据jdbc 操作oracle blob数据jdbc 操作oracle blob数据jdbc 操作oracle blob数据jdbc 操作oracle blob数据jdbc ...
jdbc操作步骤jdbc操作步骤jdbc操作步骤jdbc操作步骤jdbc操作步骤jdbc操作步骤jdbc操作步骤
在Java编程领域,JDBC(Java Database Connectivity)是连接Java应用程序和各种数据库的...通过阅读“使用JDBC操作数据库下载资料”,你可以找到更多关于JDBC实战操作的示例和详细教程,进一步提升你的数据库操作技能。
在Java中使用JDBC与MySQL进行交互,可以让开发者用Java代码实现对数据库的增删查改操作。 首先,使用JDBC操作MySQL需要以下步骤: 1. **引入JDBC驱动**:在Java项目中,你需要包含MySQL的JDBC驱动库(如mysql-...
实验3 JDBC操作数据库3主要目的是通过Java的JDBC技术来熟悉和掌握数据库的连接与操作。这个实验涉及了以下几个核心知识点: ...通过这个实验,你不仅可以巩固对JDBC的理解,还能提高数据库操作的实际技能。
JDBC编程操作:JDBC操作步骤及数据库连接操作,本资源来自于魔乐李兴华老师,感谢共享,如有侵犯版权,请联系本人,定删除。
使用jdbc操作sqlserver数据库
本教程“传智播客JDBC_完成对数据库的CRUD操作”主要涵盖了如何利用JDBC进行数据库的基本操作,包括创建(Create)、读取(Read)、更新(Update)和删除(Delete)数据。 一、创建(Create) 创建数据通常涉及到...
JDBC提供了一套API,使得开发人员能够编写数据库独立的代码,实现对数据库的增删改查等操作。然而,原始的JDBC API使用起来较为繁琐,包括加载驱动、建立连接、创建Statement或PreparedStatement对象、执行SQL语句、...
作业6 JDBC操作数据库 作业类型:验证性实验 实验目的:理解JDBC接口操作数据库的方法,熟练掌握数据的增删改查。 实验内容: 1. 在MySQL或其他DBS中创建一个数据库TestDB,其中创建表user,表至少3个字段(编号,...
在Java世界里,JDBC是连接各种数据库的标准,无论你是使用MySQL、Oracle还是SQL Server,都可以通过JDBC进行操作。 **一、JDBC基本操作流程** 1. **加载驱动**:使用`Class.forName()`方法加载数据库驱动,例如`...
总的来说,Spring对JDBC的支持使得数据库操作更加高效、安全且易于维护。它提供了丰富的API和抽象,帮助开发者避免了繁琐的JDBC代码,使他们能更专注于业务逻辑的实现。在Spring 4.0版本中,这些功能得到了进一步...
在Java世界里,Spring框架是应用最广泛的轻量级开源框架之一,它为开发者提供了许多便利,包括数据库操作。在本资源中,我们主要探讨的是...如果你对Spring JDBC感兴趣,这个资源中的代码会是一个很好的学习起点。
**JDBC操作技术详解** Java Database Connectivity (JDBC) 是Java平台中用于与关系型数据库交互的一组标准API。它是Java编程语言的核心组件之一,允许Java开发者执行SQL语句并处理来自数据库的结果。JDBC提供了统一...
JDBC操作数据库辅助类通常是为了简化数据库操作,提高代码的可读性和可维护性而设计的。这些辅助类包括资源类、会话类和工厂类,它们各自承担着不同的职责。 1. 资源类(JdbcResourceManager) 资源类主要用于管理...
**JDBC操作MySQL数据库基础教程** 在Java编程中,JDBC(Java Database Connectivity)是用于与各种数据库进行交互的一套标准API。它允许Java应用程序连接并执行SQL语句,实现数据的CRUD(Create、Read、Update、...
**JDBC操作详解** Java Database Connectivity (JDBC) 是Java平台中用于与各种数据库进行交互的一组接口和类。这个经典PPT详细介绍了JDBC的核心概念、使用步骤以及最佳实践,帮助开发者更好地理解和运用JDBC。 1. ...
第15天对jdbc的认识和了解jdbc如何操作数据库
jdbc操作数据库demon,包括增删改的封装,查询以集合返回,以jsonArray返回等,相关博文地址:http://blog.csdn.net/sapce_fish/article/details/52764678
标题“Java用JDBC实现对Oracle数据库操作”主要涉及Java编程语言如何利用Java Database Connectivity (JDBC) API来与Oracle数据库进行交互。JDBC是Java中用于与各种数据库通信的标准接口,而Oracle数据库是一个广泛...