简介
commons-dbutils 是 Apache 组织提供的一个开源 JDBC工具类库,它是对JDBC的简单封装,学习成本极低,并且使用dbutils能极大简化jdbc编码的工作量,同时也不会影响程序的性能。
作用
该包封装了SQL的执行,是线程安全的。
可以实现增、删、改、查、批处理
考虑事务处理需要用Connection
该类最主要简化了SQL查询,它与ResultSetHandler组合在一起使用可以完成大部分的数据库操作,能够大大减少编码量。
常用方法
操作:update()带事务
- QueryRanner qr =new QueryRanner();
- public int update(Connection conn, String sql, Object... params) throws SQLException:用来执行一个更新(插入、更新或删除)操作。
update()无事务
- QueryRanner qr =new QueryRanner(连接池);
- public int update(String sql, Object... params) throws SQLException:用来执行一个更新(插入、更新或删除)操作。
查询:query
- QueryRanner qr =new QueryRanner();
- public Object query(String sql, ResultSetHandler rsh,Object... params) throws SQLException:执行一个查询操作,在这个查询中,对象数组中的每个元素值被用来作为查询语句的置换参数。该方法会自行处理 PreparedStatement 和 ResultSet 的创建和关闭
注意
- 该接口用于处理 java.sql.ResultSet,将数据按要求转换为另一种形式。ResultSetHandler 接口提供了一个单独的方法:Object handle (java.sql.ResultSet rs)该方法的返回值将作为QueryRunner类的query()方法的返回值
使用
-
创建核心类:QueryRanner qr =new QueryRanner();
-
执行命令
- int update = qr.update(connection,sql,params); // 执行增删改
- T t = qr.query(connection,sql,new BeanHandler,params);
BeanHandler:将一条数据封装的成一个对象 - List t = qr.query(connection,sql,new BeanListHandler,params);
BeanListHandler:将每一条数据封装成一个对象,将多个对象装到一个集合中 - Object t = qr.query(connection,sql,new ScalerHandler,params);
ScalarHandler:使用聚合统计最大值最小值总数..使用
项目目录三层结构
表示层(JSP)
- 表现层也称为界面层,位于最外层(最上层),离用户最近。用于显示数据和接收用户输入的数据,为用户提供一种交互式操作的界面。
业务层(service)
- 业务层在体系架构中的位置很关键,它处于数据访问层与表示层中间,起到了数据交换中承上启下的作用。
- 由于层是一种弱耦合结构,层与层之间的依赖是向下的,底层对于上层而言是“无知”的,改变上层的设计对于其调用的底层而言没有任何影响。如果在分层设计时,遵循了面向接口设计的思想,那么这种向下的依赖也应该是一种弱依赖关系。
持久层(DAD)
- 持久层,有时候也称为是数据访问层,其功能主要是负责数据库的访问,可以访问数据库系统
通用DAO封装
概念
- Data Access Object访问数据信息的类和接口,包括了对数据的CRUD(Create、Retrival、Update、Delete),而不包含任何业务相关的信息
- 一个xxxDao对应xxx表的增删改查
- 一个xxxService对应xxx实体的业务
作用
- 为了实现功能的模块化,更有利于代码的维护和升级。