1、简介java
数据访问对象(DAO)封装数据库访问的细节,提供对数据库中表的粗粒度或者一次一条记录的访问。值对象(VO)封装了被访问的数据结构,有效地表示了被访问的记录。
sql
为了更好的模块化,用一个数据库工具类隔离底层数据库访问行为,使获取和更新数据的业务方法不须要负责数据库操做。这样使得数据库相关的操做都由工具类完成,使用这个工具类的各类对象之间能够有效的共享这些操做。
数据库
2、DAO描述设计模式
DAO的目的是封装数据库访问和提供为业务对象屏蔽访问细节的方法。这种方法提供了代码共享,由于各类业务对象之间共享了DAO,因此这种方法还能够本地化对数据访问代码可能的必要修改。
数据结构
这些DAO和相应的表的值对象牢牢耦合并经过表相互做用,存储从表中取来的值的类成员变量都存储在一个值对象中,此值对象又是一个类成员变量。
模块化
3、VO描述工具
值对象设计模式封装了数据记录,包括反映数据记录字段的类成员变量和属性。在类中声明了一组get和set方法用于从类成员中获取值和设置成员变量为指定的值。
this
4、代码示例:spa
1.数据表的结构.net
列名 |
数据类型 |
说明 |
Depart_id |
Int(0) |
部门编号,主键,自增 |
Depart_name |
Varchar(10) |
部门名称 |
2.简单DAO:DepartDAO.java
package com.sdust.omims.db.dao; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.Vector; import com.sdust.omims.db.bean.DepartBean; import com.sdust.omims.db.utils.DBUtil; /** * 部门信息DAO * * @author Shmily * @version 1.0 */ public class DepartDAO { // hold SQL Statement private String insertStmt; private String deleteStmt; private String selectByNameStmt; private String selectStmt; // hold prepared statement private PreparedStatement insertPreStmt; private PreparedStatement deletePreStmt; private PreparedStatement selectByNamePreStmt; private PreparedStatement selectPreStmt; // DB Utility DBUtil dbUtil; // Department Bean DepartBean departmentBean; public DepartDAO() { departmentBean = new DepartBean(); dbUtil = new DBUtil(); createPreStmts(); } /** * 建立PreparedStatement对象 */ public void createPreStmts() { try { insertStmt = "INSERT INTO tb_department VALUES(?)"; insertPreStmt = dbUtil.createPreStmt(insertStmt); deleteStmt = "DELETE FROM tb_department where depart_name = ?"; deletePreStmt = dbUtil.createPreStmt(deleteStmt); selectByNameStmt = "SELECT * FROM tb_department WHERE depart_name = ?"; selectByNamePreStmt = dbUtil.createPreStmt(selectByNameStmt); selectStmt = "SELECT * FROM tb_department"; selectPreStmt = dbUtil.createPreStmt(selectStmt); } catch (Exception e) { // TODO: handle exception System.out .println("SQLException caught in DepartDAO.createPreStmts()."); } } /** * 部门是否存在 * * @param department * 部门信息 * * @return isExit 若是存在,返回true;不然,返回false. */ public Boolean isDepartExit(DepartBean department) { Boolean isExit = false; try { selectByNamePreStmt.setString(1, department.getDepartName()); ResultSet rs = selectByNamePreStmt.executeQuery(); if (rs.next()) { if (rs.getInt(1) != 0) { isExit = true; } } } catch (Exception e) { // TODO: handle exception System.out .println("SQLException caught in DepartDAO.isDepartExit()."); } return isExit; } /** * 增长新的部门 * * @param department * 部门信息 */ public void insertDAO(DepartBean department) { if (isDepartExit(department)) { System.out.println("该部门已存在!!!"); } else { try { insertPreStmt.setString(1, department.getDepartName()); insertPreStmt.executeUpdate(); } catch (Exception e) { // TODO: handle exception System.out .println("SQLException caught in DepartDAO.insertDAO()."); } } } /** * 删除某个部门 * * @param department * 部门信息 */ public void deleteDAO(DepartBean department) { try { deletePreStmt.setString(1, department.getDepartName()); deletePreStmt.executeUpdate(); } catch (Exception e) { // TODO: handle exception System.out.println("SQLException caught in DepartDAO.deleteDAO()."); } } /** * 获取全部部门的信息 * * @return vector 全部部门的集合 */ public Vector<DepartBean> getAll() { Vector<DepartBean> vector = new Vector<DepartBean>(); try { ResultSet rs = selectPreStmt.executeQuery(); while (rs.next()) { DepartBean department = new DepartBean(); department.setDepartId(rs.getInt(1)); department.setDepartName(rs.getString(2)); vector.add(department); } } catch (Exception e) { // TODO: handle exception System.out.println("SQLException caught in DepartDAO.getAll()."); } return vector; } }
3.VO:DepartBean.java
package com.sdust.omims.db.bean; /** * 部门信息类 * * @author Shmily * @version 1.0 */ public class DepartBean { // 部门ID private int departId; // 部门名称 private String departName; public DepartBean() { } public void setDepartId(int id) { this.departId = id; } public int getDepartId() { return this.departId; } public void setDepartName(String name) { this.departName = name; } public String getDepartName() { return this.departName; } public Object get(int column) { switch (column) { case 0: return this.getDepartId(); case 1: return this.getDepartName(); default: return null; } } }
4.数据库工具类:DBUtil.java