1. DAO简介
    DAO设计模式是属于J2EE数据库层的操作,使用DAO设计模式可以简化大量代码,
增强程序的可移植性。

2. DAO各部分详解
    DAO设计模式包括5个重要的部分,分别为数据库连接类,VO类,DAO接口,
DAO实现类以及DAO工厂类。

  2-1 数据库连接类:
    数据库连接类的主要功能就是连接数据库并获得连接对象,
以及关闭数据库。通过数据库连接类可以大大地简化开发,在需要进行数据库连接时,
只需要创建该类的实例,并调用其中的方法就可以获得数据库连接对象和关闭数据库而不必进行重复操作。

  2-2 VO类
    VO类是一个包含属性和表中字段完全对应的类。并在该类中提供setter和getter方法
来设置并获取该类中的属性。

  2-3 DAO接口
    DAO接口中定义了所有的用户操作,如添加记录,删除记录以及查询记录等。不过因为是接口
所以仅仅是定义,还需要子类来实现。

  2-4 DAO实现类
    DAO实现类实现了DAO接口,并实现了DAO接口中定义的所有方法。在DAO实现中
通过连接数据库进行数据库操作。

  2-5 DAO工厂类
    在没有DAO工厂类的情况下,必须通过创建DAO实现类的实例才能完成数据库的操作。
这是就必须知道具体的子类,对于后期的修改非常不方便。如后期需要创建一个操作Oracle
的DAO实现类,这是就必须修改所有使用DAO实现类的代码。
    使用DAO工厂类可以比较方便地对代码进行管理,而且可以很好滴解决后期修改的问题,。
通过DAO工厂类的一个静态方法来获得DAO实现类的实例。这是如果需要替换DAO实现类,
只需要修改DAO工厂类中的方法代码,而不必修改所有的操作数据库代码。

3.示例:构建一个用户数据操作的DAO,要求如下:

  1)数据库连接类:DatabaseConnection.java,用于连接mysql中javaweb数据库。
  2)VO类:User.java,其中的属性名对应于user表中的字段名
  3)DAO接口类: UserDAO.java,实现对user表的添加、修改、删除、查询等操作。
  4)DAO实现类:UserDAOImpl.java
  5)DAO工厂类:DAOFactory.java ;
  并根据这个DAO实现添加记录的数据库操作:


DataBaseConnection.java

 package com.mhb;
import java.sql.*; //主要功能就是连接数据库,关闭数据库
public class DataBaseConnection {
//定义数据库驱动类
private final String DBDRIVER = "com.mysql.jdbc.Driver";
//定义数据库连接URL
private final String DBURL = "jdbc:mysql://localhost/bbs";
//定义数据库连接用户名
private final String DBUSER = "root";
//定义数据库连接密码
private final String DBPASSWORD = "123456";
//定义数据库连接对象
private Connection conn = null;
//构造方法,加载驱动
public DataBaseConnection(){
try{
Class.forName(DBDRIVER);
this.conn=DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD);
System.out.println("数据库连接成功!");
}catch(Exception e){
System.out.println("加载驱动失败!");
}
} //取得数据库连接
public Connection getConnection(){
return conn;
} //关闭数据库
public void close(){ try {
conn.close();
} catch (SQLException e) {
System.out.println("数据库连接关闭失败!");
}
}
}

User.java

 package com.mhb;

 public class User {
//用户ID
private int userid;
//用户姓名
private String username;
//用户密码
private String password; public int getUserid() {
return userid;
}
public void setUserid(int userid) {
this.userid = userid;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}

UserDAO.java

 package com.mhb;
import java.util.*; //定义数据库操作方法
public interface UserDAO {
//增加操作
public void insert (User user) throws Exception;
//修改操作
public void update (User user) throws Exception;
//删除操作
public void delete (int userid) throws Exception;
//按ID查询
public User queryById(int userid) throws Exception;
//查询全部
public List queryAll() throws Exception; }

UserDAOImpl.java

 package com.mhb;

 import java.sql.PreparedStatement;
import java.util.List; public class UserDAOImpl implements UserDAO { //添加操作
public void insert(User user) throws Exception {
String sql = "INSERT INTO user(username,password) VALUES (?,?)";
PreparedStatement pstmt = null;
DataBaseConnection dbc = null;
//下面是针对数据库的具体操作
try{
dbc= new DataBaseConnection();
pstmt = dbc.getConnection().prepareStatement(sql);
pstmt.setString(1, user.getUsername());
pstmt.setString(2, user.getPassword());
//进行数据库更新
pstmt.executeUpdate();
pstmt.close();
}catch(Exception e){
throw new Exception ("操作出现异常");
}finally{
//关闭数据库
dbc.close();
}
} public void delete(int userid) throws Exception { } public List queryAll() throws Exception {
return null;
}

DAOFactory.java

 package com.mhb;

 public class DAOFactory {
public static UserDAO getUserDAOInstance(){
return new UserDAOImpl();
}
}

MySql数据库中user表语句

 CREATE TABLE `user` (
`userid` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(20) DEFAULT NULL,
`password` varchar(20) DEFAULT NULL,
PRIMARY KEY (`userid`)
) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8

至此,DAO的5个部分就以全部结束,接下来通过DAO工厂获得DAO实现类实例。

通过DAO实现类中的方法就可以完成添加记录的数据库操作了。

添加记录AddUserDemo.jsp

 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ page import="com.mhb.*" %> <html>
<head><title>添加用户</title></head> <body>
<form action="" method="post">
<table>
<tr>
<td colspan="2">添加用户</td>
</tr>
<tr>
<td>用户姓名:</td>
<td><input type="text" name="username"></td>
</tr>
<tr>
<td>用户密码</td>
<td><input type="password" name="password"></td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="添加">
<input type="reset" value="重置">
</td>
</tr>
</table>
</form> <%
//获取表单中输入的用户名以及密码
String userName = (String)request.getParameter("username");
String password = (String)request.getParameter("password");
//通过DAO工厂获得DAO实现类的实例
UserDAO userDAO = DAOFactory.getUserDAOInstance();
//设置需要添加的用户
User user = new User();
user.setUsername(userName);
user.setPassword(password);
//如果用户名密码不为空则添加入数据库
if(userName != null && userName != ""){
if(password != null && password != ""){
userDAO.insert(user);
}
}else{
out.print("用户名或密码不能为空!");
}
%>
</body>
</html>

浏览器显示


username:admin,password:123456

数据库显示

DAO设计模式 -- 使用数据库连接类连接MySql数据库并实现添加用户的更多相关文章

  1. Myeclipse WEB工程JSP使用JNDI 数据库连接池连接Mysql数据库

    在网上查了很多,最后实现了.下面写一下过程: 首先,在WEBROOT/META-INF下建一个文件context.xml,内容为: <?xml version="1.0" e ...

  2. Java连接MySQL数据库。编写一个应用程序,在主类Test_4类中,通过JDBC访问stu数据库,显示t_student表中的内容(表结构见表1),显示效果自己设计。

    题目2:编写一个应用程序,在主类Test_4类中,通过JDBC访问stu数据库,显示t_student表中的内容(表结构见表1),显示效果自己设计.之后,可根据显示的内容进行某条记录的删除(以id为条 ...

  3. java jdbc 连接mysql数据库 实现增删改查

    好久没有写博文了,写个简单的东西热热身,分享给大家. jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打 ...

  4. jsp-2 简单的servlet连接mysql数据库 增删改查

    连接mysql数据库的操作 有增删改查 用的包有 commons-lang3-3.5 mysql-connector-java-5.1.40-bin 但是实际上也就是 数据查询和数据处理两种 所以对数 ...

  5. jsp-3 简单的servlet连接mysql数据库 使用mvc的登录注册

    简单的servlet连接mysql数据库 使用mvc的登录注册 commons-dbutils-1.6 mysql-connector-java-5.1.40-bin c3p0-0.9.5.2 mch ...

  6. Java进阶(二十五)Java连接mysql数据库(底层实现)

    Java进阶(二十五)Java连接mysql数据库(底层实现) 前言 很长时间没有系统的使用java做项目了.现在需要使用java完成一个实验,其中涉及到java连接数据库.让自己来写,记忆中已无从搜 ...

  7. Spring Boot连接MySQL数据库

    上篇 只需两步!Eclipse+Maven快速构建第一个Spring Boot项目 已经构建了一个Spring Boot项目,本文在此基础上进行连接MySQL数据库的操作. 1. pom.xml添加依 ...

  8. 分页查询信息(使用jdbc连接mysql数据库实现分页查询任务)

             分页查询信息       使用jdbc连接mysql数据库实现分页查询任务 通过mysql数据库提供的分页机制,实现商品信息的分页查询功能,将查询到的信息显示到jsp页面上. 本项目 ...

  9. hibernate简单连接mysql数据库配置

    使用hibernate连接mysql数据库 1:项目搭建好之后,在lib包中添加必要的jar包,和mysql数据库驱动jar包: jar包可以在hibernate的下载包(hibernate3.3.2 ...

随机推荐

  1. Lua 常用的shell命令

    lua作为一种小巧的脚本语言,其函数等动作可以使用shell命令进行运行和调试,以下是几个常用的shell命令.基本格式是  lua [选项参数] [脚本参数] (1)%lua 程序名.lua     ...

  2. hive中简单介绍分区表

    所介绍内容基本上是翻译官方文档,比较肤浅,如有错误,请指正! hive中创建分区表没有什么复杂的分区类型(范围分区.列表分区.hash分区.混合分区等).分区列也不是表中的一个实际的字段,而是一个或者 ...

  3. 学C++之感悟

    程序设计真的就这么难得入门啊 最要命的事情就是看那些看不懂的书.断断续续地看C++Primer好几天了,还是一点眉目都没有,稀里糊涂的.看得头疼了用Google找过来人留下的东西看,无意中发现了一篇自 ...

  4. 标签跳转break和continue

    标签是后面跟有冒号的标识符,例如  label1: 在java中,标签起作用的唯一的地方刚好是在迭代语句之前. “刚好之前”的意思表明,在标签和迭代之间置入热和语句都不好. 而在迭代之前设置标签的唯一 ...

  5. 部署图 Deployment Diagram

    UML部署图描述了一个运行时的硬件结点,以及在这些结点上运行的软件组件的静态视图. 部署图显示了系统的硬件,安装在硬件上的软件,以及用于连接异构的机器之间的中间件. 下面这张图介绍了部署图的基本内容: ...

  6. eclipse下如何关联android-support-v4.jar源码

    一.首先导入jar包 如果android-support-v4.jar包在libs目录下,先将它移除.然后点选中项目右键 --->properties-->javabuildpath--& ...

  7. MS SQL Server中的CONVERT日期格式化大全

    CONVERT 将某种数据类型的表达式显式转换为另一种数据类型.由于某些需求经常用到取日期格式的不同. 现以下可在SQL Server中将日期格式化. SQL Server 支持使用科威特算法的阿拉伯 ...

  8. 3139:[HNOI2013]比赛 - BZOJ

    题目描述 Description 沫沫非常喜欢看足球赛,但因为沉迷于射箭游戏,错过了最近的一次足球联赛.此次联赛共N只队伍参加,比赛规则如下: (1) 每两支球队之间踢一场比赛. (2) 若平局,两支 ...

  9. WCF 之 DataContract

    在客户端与服务端之间传递的自定义数据类型,格式如下: [DataContract] public class User :IExtensibleDataObject { [DataMember] pu ...

  10. jquery 实现层级下拉框联动效果 代码

    <select name="fCareId" id="fCareId"> <option selected="selected&qu ...