JavaWeb技术(二):DAO设计模式

1. DAO全称:Data Access Object , 数据访问对象。使用DAO设计模式来封装数据持久化层的所有操作(CRUD),使得数据访问逻辑和业务逻辑分离,实现解耦的目的。

2. 典型的DAO实现组件:DAO接口 + DAO接口的实现类

3. 事例代码

  1)javabean组件:用于数据传输的对象

/** javabean数据传输对象 */
public class Customer {
    // 和数据库中的表是对应的
    private int id;
    private String name;
    private String email;

    // 省略getter()/setter()方法

    @Override
    public String toString() {
        return id + ", " + name + ", " + email;
    }
}

  2)DAO接口

/** DAO接口,用于定义application访问数据库的通用方法  */
public interface CustomerDemo {
    // CRUD
    public void add(Customer c);
    public void update(Customer    c);
    public void delete(int id);
    public Customer getCustomerById(int id);
    public List<Customer> queryList();

}

  3)DAO接口的实现类

  1 package com.znker.jdbc;
  2
  3 import java.sql.Connection;
  4 import java.sql.PreparedStatement;
  5 import java.sql.ResultSet;
  6 import java.sql.SQLException;
  7 import java.sql.Statement;
  8 import java.util.ArrayList;
  9 import java.util.List;
 10
 11 // DAO接口的实现类
 12
 13 public class CustomerDaoImpl implements CustomerDemo {
 14
 15     @Override
 16     public void add(Customer c) {
 17         String sql = "insert into CustomerTb1(name,email) values(?,?)";
 18         // 获得一个数据库连接对象
 19         Connection conn = DBUtil2.open();
 20
 21         try {
 22             // 预定义语句对象
 23             PreparedStatement pstmt = conn.prepareStatement(sql);
 24             // 对占位符进行赋值
 25             pstmt.setString(1, c.getName());
 26             pstmt.setString(2, c.getEmail());
 27             // 执行添加操作
 28             pstmt.executeUpdate();
 29
 30         } catch (SQLException e) {
 31             e.printStackTrace();
 32         } finally {
 33             DBUtil2.close(conn);
 34         }
 35     }
 36
 37     @Override
 38     public void update(Customer c) {
 39         String sql = "update CustomerTb1 set name=?, email=? where id=?";
 40         Connection conn = DBUtil2.open();
 41
 42         try {
 43             PreparedStatement pstmt = conn.prepareStatement(sql);
 44             pstmt.setInt(3, c.getId());
 45             pstmt.setString(1, c.getName());
 46             pstmt.setString(2, c.getEmail());
 47
 48             pstmt.executeUpdate();
 49
 50         } catch (SQLException e) {
 51             e.printStackTrace();
 52         } finally {
 53             DBUtil2.close(conn);
 54         }
 55     }
 56
 57     @Override
 58     public void delete(int id) {
 59         String sql = "delete from CustomerTb1 where id = ?";
 60         Connection conn = DBUtil2.open();
 61
 62         try {
 63             PreparedStatement pstmt = conn.prepareStatement(sql);
 64             pstmt.setInt(1, id);
 65
 66             pstmt.executeUpdate();
 67
 68         } catch (SQLException e) {
 69             e.printStackTrace();
 70         } finally {
 71             DBUtil2.close(conn);
 72         }
 73     }
 74
 75     @Override
 76     public Customer getCustomerById(int id) {
 77         String sql = "select id, name, email from CustomerTb1 where id = ?";
 78         Connection conn = DBUtil2.open();
 79
 80         try {
 81             PreparedStatement pstmt = conn.prepareStatement(sql);
 82             pstmt.setInt(1, id);
 83
 84             ResultSet rs = pstmt.executeQuery();
 85
 86             if (rs.next()) {
 87                 String name = rs.getString(2);
 88                 String email = rs.getString("email");
 89
 90                 Customer c = new Customer();
 91                 c.setId(id);
 92                 c.setName(name);
 93                 c.setEmail(email);
 94
 95                 return c;
 96             }
 97         } catch (SQLException e) {
 98             e.printStackTrace();
 99         }
100
101         return null;
102     }
103
104     @Override
105     public List<Customer> queryList() {
106         String sql = "select id, name, email from CustomerTb1 ";
107         Connection conn = DBUtil2.open();
108
109         try {
110             Statement stmt = conn.createStatement();
111             ResultSet rs = stmt.executeQuery(sql);
112             List<Customer> list = new ArrayList<Customer>();
113
114             while (rs.next()) {
115                 int id = rs.getInt(1);
116                 String name = rs.getString(2);
117                 String email = rs.getString("email");
118
119                 Customer c = new Customer();
120                 c.setId(id);
121                 c.setName(name);
122                 c.setEmail(email);
123
124                 list.add(c);
125             }
126
127             return list;
128         } catch (SQLException e) {
129             e.printStackTrace();
130         } finally {
131             DBUtil2.close(conn);
132         }
133
134         return null;
135     }
136
137 }

  4)测试代码

import java.util.ArrayList;
import java.util.List;

public class DaoTest {

    public static void main(String[] args) {

        // DAO接口的实现对象,用户业务层访问数据库
        CustomerDemo dao = new CustomerDaoImpl();

        // 添加一个用户
        Customer c = new Customer();
        c.setName("bobo");
        c.setEmail("[email protected]");
        dao.add(c);

        // 查询一个用户List
        List<Customer> list = new ArrayList<Customer>();
        list = dao.queryList();
        System.out.println(list);

    }
}
时间: 2024-10-11 22:41:22

JavaWeb技术(二):DAO设计模式的相关文章

JavaWeb学习笔记——DAO设计模式

jsp DAO设计模式

DAO(Data Access Objects)设计模式是属于J2EE体系架构中的数据层的操作. 一.为什么要用DAO? 比较在JSP页面中使用JDBC来连接数据库,这样导致了JSP页面中包含了大量的HTML代码和JSP代码,将显示和功能代码混在一起,难以维护.并且在JSP页面中使用JDBC代码,必须导入相应的"java.sql.*"包.基于使得JSP页面专注于数据的表现的思想,我们只是希望JSP主要负责数据的显示,而不需要关注数据的来源和途径.同时在JSP进行JDBC操作,重复编码太

对于使用javaweb技术制作简单管理系统的学习

近期在老师的引导下我们学习了利用Javaweb技术制作简单的管理系统,其中涉及到的技术很多,由于大多都是自学 对这些技术的理解还太浅显但能实现一些相关功能的雏形. (一).登录功能 在登陆功能中通过与数据库的连接实现了验证用户账号与密码是否正确的功能,并添加了简易的权限设置使 不同用户登录成功后所呈现的主界面是不同的:同时还有验证码功能能检测验证码是否输入正确. 数据库: jsp: 1 <%@ page language="java" contentType="text

DAO设计模式实现数据库的增删改查(进一步封装JDBC工具类)

一.DAO模式简介 DAO即Data Access Object,数据访问接口.数据访问:故名思义就是与数据库打交道.夹在业务逻辑与数据库资源中间. DAO模式实际上是两个模式的组合,即Data Accessor (数据访问者)模式和 Active Domain Object(领域对象)模式.Data Accessor 模式实现了数据访问和业务逻辑的分离:Active Domain Object 模式实现了业务数据的对象化封装. 需要注意的是,DAO设计模式是Java EE中的设计模式,而非Ja

JavaBean在DAO设计模式简介

一.信息系统开发框架 客户层-------显示层-------业务层---------数据层---------数据库 1.客户层:客户层是client,简单的来说就是浏览器. 2.显示层:JSP/Servlet,用于给浏览器显示. 3.业务层:对于数据层的原子操作进行整合. 4.数据层:对于数据库进行的原子操作,添加.删除等: 二.DAO(Data Access Object)介绍 DAO应用在数据层那块,用于訪问数据库,对数据库进行操作的类. 三.DAO设计模式的结构 DAO设计模式一般分为几

JavaBean中DAO设计模式介绍

一.信息系统的开发架构 客户层-------显示层-------业务层---------数据层---------数据库 1.客户层:客户层就是客户端,简单的来说就是浏览器. 2.显示层:JSP/Servlet,用于给浏览器显示. 3.业务层:对于数据层的原子操作进行整合. 4.数据层:对于数据库进行的原子操作,增加.删除等: 二.DAO(Data Access Object)介绍 DAO应用在数据层那块,用于访问数据库,对数据库进行操作的类. 三.DAO设计模式的结构 DAO设计模式一般分为几个

【设计模式】:Dao设计模式详解及一个简单的项目(AJAX+JSP+Servlet)

迫于课程结束,老师逼着让做课程设计,就简单花了一天的时间写了个使用dao设计模式的东西~ ~ ~顺带在这里讲解下dao设计模式 把写个这个东西的源代码放上来: http://download.csdn.net/detail/u010800530/8273915 先画一个图,这个图可能能够完整表达出dao设计模式的意思,但是可以在下边通过代码看出来: 一.完成登陆功能(未设计AJAX,等到完成显示列表的时候我们做AJAX): 首先,我们建立一个项目TestJSP 然后,我们写一个login.jsp

DAO设计模式 -- 使用数据库连接类连接MySql数据库并实现添加用户

1. DAO简介    DAO设计模式是属于J2EE数据库层的操作,使用DAO设计模式可以简化大量代码,增强程序的可移植性. 2. DAO各部分详解    DAO设计模式包括5个重要的部分,分别为数据库连接类,VO类,DAO接口,DAO实现类以及DAO工厂类.   2-1 数据库连接类:    数据库连接类的主要功能就是连接数据库并获得连接对象,以及关闭数据库.通过数据库连接类可以大大地简化开发,在需要进行数据库连接时,只需要创建该类的实例,并调用其中的方法就可以获得数据库连接对象和关闭数据库而

MySQL数据库学习笔记(十一)----DAO设计模式实现数据库的增删改查(进一步封装JDBC工具类)

[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4059514.html 联系方式:[email protected] [正文] 一.DAO模式简介 DAO即Data Access Object,数据访问接口.数据访问:故名思义就是与数据库打交道.夹在业务逻辑与数据库资源中间. DAO模式实际上是两个模式的组合,即Data Accessor (数据