DAO设计模式

  DAO设计模式简介: DAO设计模式可以减少代码量,增强程序的可移植性,提高代码的可读性。

  DAO(数据库操作对象)设计模式是 JavaEE 数据层的操作.主要由五部分组成:

    1.数据库连接类:连接数据库并获取连接对象。

    2.VO实体类:包含属性和表中字段完全对应的类。

    3.DAO接口:提供了用户所有的操作方法(就如老师给学生提供一些学习方法)。

    4.DAO实现类:实现DAO中所有的方法(就如老师给提供的方法看你如何去完成)。

    5.DAO工厂类:为程序提供方法,如果要替换DAO实现类,只需要修改该Dao工厂类中的方法代码,

而不必邀修改所有的操作数据库代码(如代理人专门为需要的公司提供人才,也叫做服务层)。

下面以一个用户登录为例:

  1.数据库建表:

  2.数据库连接类  com.util(记得导入c3p0框架包)

  1. package com.util;
  2.  
  3. import java.sql.Connection;
  4. import java.sql.ResultSet;
  5. import java.sql.Statement;
  6. import javax.sql.DataSource;
  7. import com.mchange.v2.c3p0.ComboPooledDataSource;
  8.  
  9. public class C3P0Util {
  10. // C3P0数据源
  11. private static ComboPooledDataSource dataSource = new ComboPooledDataSource();
  12.  
  13. public static DataSource getDataSource() {
  14. return dataSource;
  15. }
  16.  
  17. public static Connection getConn() {
  18. Connection conne = null;
  19. try {
  20. conne = dataSource.getConnection();
  21. } catch (Exception e) {
  22. e.printStackTrace();
  23. }
  24. return conne;
  25. }
  26.  
  27. // 关闭资源
  28. public static void closeAll(ResultSet rs, Statement st, Connection conne) {
  29. try {
  30. if (null != rs) {
  31. rs.close();
  32. }
  33. } catch (Exception e) {
  34. e.printStackTrace();
  35. }
  36. try {
  37. if (null != st) {
  38. st.close();
  39. }
  40. } catch (Exception e) {
  41. e.printStackTrace();
  42. }
  43. try {
  44. if (conne != null) {
  45. conne.close();
  46. }
  47. } catch (Exception e) {
  48. e.printStackTrace();
  49. }
  50. }
  51. }

  3.VO实体类  com.entity

  1. package com.entity;
  2.  
  3. import java.io.Serializable;
  4.  
  5. public class Person implements Serializable {
  6.  
  7. private static final long serialVersionUID = 1L;
  8.  
  9. private int id;
  10. private String name;
  11. private String password;
  12.  
  13. public int getId() {
  14. return id;
  15. }
  16.  
  17. public void setId(int id) {
  18. this.id = id;
  19. }
  20.  
  21. public String getName() {
  22. return name;
  23. }
  24.  
  25. public void setName(String name) {
  26. this.name = name;
  27. }
  28.  
  29. public String getPassword() {
  30. return password;
  31. }
  32.  
  33. public void setPassword(String password) {
  34. this.password = password;
  35. }
  36.  
  37. }

  

  4.DAO接口类  com.dao

  1. package com.dao;
  2.  
  3. import com.entity.Person;
  4.  
  5. public interface PersonDao {
  6.  
  7. //根据对象查询
  8. public Person findMaster(Person person);
  9. }

  

  5.DAO实现类  com.daoImpl

  1. package com.daoImpl;
  2.  
  3. import java.sql.Connection;
  4. import java.sql.PreparedStatement;
  5. import java.sql.ResultSet;
  6.  
  7. import com.dao.PersonDao;
  8. import com.entity.Person;
  9. import com.util.C3P0Util;
  10.  
  11. public class PersonDaoImpl implements PersonDao {
  12.  
  13. @Override
  14. public Person findMaster(Person person) {
  15. Connection conne = null;
  16. PreparedStatement pstmt = null;
  17. ResultSet rs = null;
  18. Person person2 = null;
  19. String sql = "SELECT * FROM person WHERE name = ? AND password = ?";
  20.  
  21. try {
  22. conne = C3P0Util.getConn();
  23.  
  24. // 建立了到特定数据库的连接之后,就可用该连接发送 SQL 语句。
  25. pstmt = conne.prepareStatement(sql);
  26. pstmt.setString(1, person.getName());
  27. pstmt.setString(2, person.getPassword());
  28. rs = pstmt.executeQuery();
  29.  
  30. if (rs.next()) {
  31. person2 = new Person();
  32. person2.setId(rs.getInt("id"));
  33. person2.setName(rs.getString("name"));
  34. person2.setPassword(rs.getString("password"));
  35. }
  36. } catch (Exception e) {
  37. e.printStackTrace();
  38. } finally {
  39. C3P0Util.closeAll(rs, pstmt, conne);
  40. }
  41. return person2;
  42. }
  43.  
  44. }

  

  6.DAO工厂接口  com.service

  1. package com.service;
  2.  
  3. import com.entity.Person;
  4.  
  5. public interface PersonService {
  6. public boolean login (Person person);
  7. }

  

  7.DAO工厂实现类  com.serviceImpl

  1. package com.serviceImpl;
  2.  
  3. import com.dao.PersonDao;
  4. import com.daoImpl.PersonDaoImpl;
  5. import com.entity.Person;
  6. import com.service.PersonService;
  7.  
  8. public class PersonServiceImpl implements PersonService {
  9.  
  10. @Override
  11. public boolean login(Person person) {
  12. boolean islogin = false;
  13. PersonDao pd = new PersonDaoImpl();
  14. Person ps2 = pd.findMaster(person);
  15. if (null != ps2) {
  16. islogin = true;
  17. }
  18. return islogin;
  19. }
  20. }

  

  8.测试

  1. package com.test;
  2.  
  3. import java.util.Scanner;
  4.  
  5. import org.junit.Test;
  6.  
  7. import com.entity.Person;
  8. import com.service.PersonService;
  9. import com.serviceImpl.PersonServiceImpl;
  10.  
  11. public class LoginTest {
  12. @Test
  13. public void loginTest() {
  14. Scanner sc = new Scanner(System.in, "UTF-8");
  15. System.out.println("请输入用户名");
  16. String loginName = sc.next();
  17. System.out.println("请输入密码");
  18. String loginPassword = sc.next();
  19.  
  20. Person person = new Person();
  21. person.setName(loginName);
  22. person.setPassword(loginPassword);
  23.  
  24. PersonService ps = new PersonServiceImpl();
  25. boolean isLoginid = ps.login(person);
  26.  
  27. if (isLoginid) {
  28. System.out.println("登录成功");
  29. } else {
  30. System.out.println("用户名或密码错误");
  31. }
  32. }
  33. }

运行结果如下:

DAO设计模式的更多相关文章

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

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

  2. Java Dao设计模式

    一.信息系统的开发架构   客户层-------显示层-------业务层---------数据层---------数据库 1.客户层:客户层就是客户端,简单的来说就是浏览器. 2.显示层:JSP/S ...

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

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

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

    1. DAO简介    DAO设计模式是属于J2EE数据库层的操作,使用DAO设计模式可以简化大量代码,增强程序的可移植性. 2. DAO各部分详解    DAO设计模式包括5个重要的部分,分别为数据 ...

  5. JavaBean中DAO设计模式介绍(转)

    一.信息系统的开发架构 客户层-------显示层-------业务层---------数据层---------数据库 1.客户层:客户层就是客户端,简单的来说就是浏览器. 2.显示层:JSP/Ser ...

  6. jsp DAO设计模式

    DAO(Data Access Objects)设计模式是属于J2EE体系架构中的数据层的操作. 一.为什么要用DAO? 比较在JSP页面中使用JDBC来连接数据库,这样导致了JSP页面中包含了大量的 ...

  7. 简单的Dao设计模式

    简单的DAO设计模式 这两天学习到了DAO(Data Access Object 数据存取对象)设计模式.想谈谈自己的感受,刚开始接触是感觉有点难,觉得自己逻辑理不清,主要是以前学的知识比较零散没有很 ...

  8. Java学习之DAO设计模式

    DAO设计模式是一个javaEE里的设计模式,DAO是Data Access Object 数据访问接口. 一个典型的DAO实现有三个组件: 1.一个DAO接口 2.一个DAO接口的具体类: 3.数据 ...

  9. JavaBean在DAO设计模式简介

    一.信息系统开发框架 客户层-------显示层-------业务层---------数据层---------数据库 1.客户层:客户层是client,简单的来说就是浏览器. 2.显示层:JSP/Se ...

随机推荐

  1. iOS开发系列--音频播放、录音、视频播放、拍照、视频录制

    --iOS多媒体 概览 随着移动互联网的发展,如今的手机早已不是打电话.发短信那么简单了,播放音乐.视频.录音.拍照等都是很常用的功能.在iOS中对于多媒体的支持是非常强大的,无论是音视频播放.录制, ...

  2. PropertyGrid控件由浅入深(一):文章大纲

    Winform中PropertyGrid控件是一个非常好用的对象属性编辑工具,对于Key-Value形式的数据的处理也是非常的好用. 因为Property控件设计良好,在很小的空间内可以展示很多的内容 ...

  3. C# 仿刷-框架MvcThrottle的使用

    1.介绍 1)用MvcThrottle你能保护你的网站不受攻击.刷. 2)你可以限制与设置多个不同场景允许的IP,设置 每秒/分/天 允许访问IP. 3)你可以定义限制,来处理所有请求.或者某个Con ...

  4. Struts2+Spring+Hibernate框架整合总结详细教程

    一.SSH三大框架知识总结 Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架.其全新的Struts 2的体系结构与S ...

  5. atitit 商业项目常用模块技术知识点 v3 qc29

    atitit 商业项目常用模块技术知识点 v3 qc29 条码二维码barcodebarcode 条码二维码qrcodeqrcode 条码二维码dm码生成与识别 条码二维码pdf147码 条码二维码z ...

  6. 从Fiddler抓包到Jmeter接口测试(简单的思路)

    备注:本文为博主的同事总结的文章,未经博主允许不得转载. Fiddler下载和配置安装 从网上下载fiddler的安装包即可,直接默认,一直点击下一步,直至安装完成. 安装完成后直接打开Fiddler ...

  7. angular2系列教程(三)components

    今天,我们要讲的是angualr2的components. 例子

  8. -Android -线程池 批量上传图片 -附php接收代码

    (出处:http://www.cnblogs.com/linguanh/) 目录: 1,前序 2,类特点 3,用法 4,java代码 5,php代码 1,前序 还是源于重构,看着之前为赶时间写着的碎片 ...

  9. 读书笔记--SQL必知必会11--使用子查询

    11.1 子查询 查询(query),任何SQL语句都是查询.但此术语一般指SELECT语句. SQL还允许创建子查询(subquery),即嵌套在其他查询中的查询. 作为子查询的SELECT语句只能 ...

  10. ASP.NET Core 中文文档 第四章 MVC(2.2)模型验证

    原文:Model Validation 作者:Rachel Appel 翻译:娄宇(Lyrics) 校对:孟帅洋(书缘) 在这篇文章中: 章节: 介绍模型验证 验证 Attribute 模型状态 处理 ...