DAO  数据访问对象     属于JAVAEE的数据层的操作    用来完成数据库的访问,实现基本的CURD数据库操作

DAO包括五个部分:

1.   数据库连接类                  实现数据库连接封装的操作

2.    javabean类                    对应数据库中的表     每个bean对应一张表

3.   DAO接口                         定义了数据库的CURD等操作   用于给具体子类实现数据库操作

4.  DAO实现类                       实现DAO接口

5 . DAO工厂类                       用来获取DAO实现类的实例   完成数据库操作    一般获取实例的方法为静态方法

代码演示:

1.  数据库连接类

package com.lbwmx.mysql;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

//创建数据库操作类DatabaseConnection,主要负责数据库连接及关闭。

public class DbConnection {
private final String driver="com.mysql.jdbc.Driver";
private final String url="jdbc:mysql://localhost:3306/test";
private final String dbuser="littlebear";
private final String dbpassword="littlebear";
private Connection conn=null;

public DbConnection() {
try {
Class.forName(driver);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
this.conn=DriverManager.getConnection(url,dbuser,dbpassword);
} catch (SQLException e) {
e.printStackTrace();
}
}

public Connection getConnection() {
return this.conn;
}

public void closeConnection() {
try {
this.conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}

}

2.  javabean  类

package com.lbwmx.bean;

import com.lbwmx.dao.DaoFactory;

public class User {
private int uid;
private String name;
private String password;

public User() {
super();
}

public User(int uid,String password){
this.uid=uid;
this.password=password;
}

public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}

public boolean LoginValidate() throws Exception{
User user=(User)DaoFactory.getDaoInstance().findByUid(this.uid);
if (user==null) {
return false;
}
if (!user.getPassword().equals(this.password)) {
return false;   //error password
}
return true;
}

}

3.  DAO接口类

package com.lbwmx.dao;

import java.util.List;

import com.lbwmx.bean.User;

public interface UserDao {
public boolean doInsert(User user) throws Exception;
public User findByUid(int uid) throws Exception;
public List findAll() throws Exception;
}

4 .  DAO实现类

package com.lbwmx.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import com.lbwmx.bean.User;

public class UserDaoImpl implements UserDao{
private Connection conn=null;
private PreparedStatement psmt=null;

public UserDaoImpl(Connection conn) {
this.conn=conn;
}

public boolean doInsert(User user) throws Exception {

String insert="insert into user(uid,name,password) values (?,?,?)";
this.psmt=this.conn.prepareStatement(insert);
this.psmt.setInt(1, user.getUid());
this.psmt.setString(2, user.getName());
this.psmt.setString(3, user.getPassword());
int n = this.psmt.executeUpdate();
this.psmt.close();
if (n>0) {
return true;
}
return false;
}

public List findAll() throws Exception {
String select="select * from user";
List list=new ArrayList();
this.psmt=this.conn.prepareStatement(select);
ResultSet rst=this.psmt.executeQuery();
while (rst.next()) {
User user=new User();
user.setUid(rst.getInt("uid"));
user.setName(rst.getString("name"));
user.setPassword(rst.getString("password"));
list.add(user);
}
this.psmt.close();   //当关闭 psmt的时候,rst结果集也会随之关闭!  
//rst.close();
return list;
}

public User findByUid(int uid) throws Exception {
String sql="select * from user where uid=?";
this.psmt=this.conn.prepareStatement(sql);
ResultSet rst=this.psmt.executeQuery();
User user=null;
if (rst.next()) {
user=new User();
user.setUid(rst.getInt("uid"));
user.setName(rst.getString("name"));
user.setPassword(rst.getString("password"));
}
this.psmt.close();
return user;
}

}

DAO代理类

package com.lbwmx.dao;

import java.util.List;

import com.lbwmx.bean.User;
import com.lbwmx.mysql.DbConnection;

public class DaoProxy implements UserDao{
private DbConnection dbConnection=null;
private UserDao dao=null;
public DaoProxy() {
this.dbConnection=new DbConnection();
this.dao=new UserDaoImpl(this.dbConnection.getConnection());
}

public boolean doInsert(User user) throws Exception {
boolean flag=false;
try {
if (null==this.dao.findByUid(user.getUid())) {
flag=this.dao.doInsert(user);
}
} catch (Exception e) {
throw e;
}finally{
this.dbConnection.closeConnection();
}
return flag;
}

public List findAll() throws Exception {
List list=null;
try {
list=this.dao.findAll();
} catch (Exception e) {
throw e;
}finally{
this.dbConnection.closeConnection();
}
return list;
}
public User findByUid(int uid) throws Exception {
User user=null;
try {
user=this.dao.findByUid(uid);
} catch (Exception e) {
throw e;
}
return user;
}
}

5  .DAOFactory类   获取实现类实例

package com.lbwmx.dao;

public class DaoFactory {
//定义工厂类DaoFactory。工厂类通过DaoProxy实例化IDao对象,供调用者操作数据库。
public static UserDao getDaoInstance(){
return new DaoProxy();
}
}

测试代码:

User user = new User(1000,"password" );

boolean flag =  DaoFactory.getDaoInstance().doInsert(user);

if(flag){

System.out.println("success");

}else{

System.out.println("error");

}

java DAO设计模式相关推荐

  1. Java 分层设计(DAO设计模式)

    此文章是本人学习mldn魔乐科技DAO设计模式教学视频后,总结下来,用于复习使用,在这里感谢mldn的学习视频. DAO设计模式? DAO全称是(Data Access Object,数据库访问对象) ...

  2. JavaBean中DAO设计模式介绍

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

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

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

  4. Dao设计模式(Data Access Object)

    目    录(本篇字数:1858) 介绍 通用Dao 一.Dao泛型接口 二.JavaBean 三.Dao接口实现类 四.单元测试 五.反射工具类 介绍 Dao设计模式(Data Access Obj ...

  5. android dao设计模式,DAO设计模式

    1. DAO简介 DAO的全称是:Data Access Object,数据访问对象.使用DAO设计模式来封装数据库持久层所有操作(CRUD) ,使低级的数据逻辑和高级的业务分离,达到解耦合的目的. ...

  6. dao设计模式_DAO设计模式

    dao设计模式 DAO stands for Data Access Object. DAO Design Pattern is used to separate the data persisten ...

  7. JSP详细DAO设计模式及应用(!)

    原文地址:http://just-do-myself.iteye.com/blog/655227 DAO(Data Access Objects)设计模式是属于J2EE体系架构中的数据层的操作. 一. ...

  8. Java 经典设计模式-- 05.并发型模式

    前言 书接上文,终于来到了设计模式篇最硬核的并发设计模式介绍篇了,上一篇中对 Java 8 的行为模式中的常用设计模式做了介绍与分析,本篇将对 Java 8 的并发模式中的常用模式做介绍与分析,为了为 ...

  9. JDBC编程和DAO设计模式

    在JDBC编程中,一种常用的设计模式为DAO设计模式,DAO的全称为 Data Access Object 数据访问对象. DAO设计模式有两个要点: 1.分层,将底层数据逻辑和高层的业务逻辑分层,实 ...

最新文章

  1. linux手动释放内存的方法
  2. Bioinformatics|基于知识图谱嵌入的药物靶标发现
  3. mysql如何提高其查询速度的方法
  4. MySQL 5.7 并行复制实现原理与调优
  5. python安卓版turtle模块下载_python之turtle的模块
  6. centos7搭建SVN+Apache+IF.svnadmin支持https实现web管理SVN
  7. java哈希_Java Hashtable 类
  8. heat 用法 示例
  9. sql IDENTITY(函数)
  10. 硬盘序列号是唯一的吗_NANDrive 解决方案 微型固态硬盘设计方案
  11. (转载)C#控件缩写规范
  12. 笔记本计算机故障排除,笔记本电脑常见故障原因 笔记本电脑常见故障解决方法【详解】...
  13. Python-property
  14. yield()函数的使用
  15. 一个产品经理,写下的30条调皮经验
  16. 加州大学计算机硕士,加州大学伯克利分校计算机科学硕士
  17. Flex弹性盒子详解:从量变到质变的理解
  18. 【漫画】员工当腻了,不如做领导!
  19. 以太坊Python智能合约开发指南
  20. 基于SSM的演唱会网上订票系统

热门文章

  1. Halcon条码定位算法(一维码)
  2. 获取淘宝商品的SKU信息
  3. 高分三号(GF-3)单极化/双极化/全极化多时相变化检测
  4. 静态中间继电器ZJY-400/DC110V
  5. 叶绿体基因组分析须要注意的地方(组装篇)
  6. 第一部分:基础知识(第一章)
  7. 08_心理咨询_微信小程序项目实战_关于我们页面静态效果实现
  8. 用java做的免费投票器/软件/工具 可定制
  9. [中医养生] 听JT叔叔讲中医基础理论 第二讲
  10. python hackrf_GnuRadio在HackRF打开的情况下无法运行OS X 10.9.4