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

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

 1 package com.mhb;
 2 import java.sql.*;
 3
 4 //主要功能就是连接数据库,关闭数据库
 5 public class DataBaseConnection {
 6 //定义数据库驱动类
 7 private final String DBDRIVER = "com.mysql.jdbc.Driver";
 8 //定义数据库连接URL
 9 private final String DBURL = "jdbc:mysql://localhost/bbs";
10 //定义数据库连接用户名
11 private final String DBUSER = "root";
12 //定义数据库连接密码
13 private final String DBPASSWORD = "123456";
14 //定义数据库连接对象
15 private Connection conn = null;
16 //构造方法,加载驱动
17 public DataBaseConnection(){
18 try{
19 Class.forName(DBDRIVER);
20 this.conn=DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD);
21 System.out.println("数据库连接成功!");
22 }catch(Exception e){
23 System.out.println("加载驱动失败!");
24 }
25 }
26
27 //取得数据库连接
28 public Connection getConnection(){
29 return conn;
30 }
31
32 //关闭数据库
33 public void close(){
34
35 try {
36 conn.close();
37 } catch (SQLException e) {
38 System.out.println("数据库连接关闭失败!");
39 }
40 }
41 }

User.java

 1 package com.mhb;
 2
 3 public class User {
 4 //用户ID
 5 private int userid;
 6 //用户姓名
 7 private String username;
 8 //用户密码
 9 private String password;
10
11 public int getUserid() {
12 return userid;
13 }
14 public void setUserid(int userid) {
15 this.userid = userid;
16 }
17 public String getUsername() {
18 return username;
19 }
20 public void setUsername(String username) {
21 this.username = username;
22 }
23 public String getPassword() {
24 return password;
25 }
26 public void setPassword(String password) {
27 this.password = password;
28 }
29 }

UserDAO.java

 1 package com.mhb;
 2 import java.util.*;
 3
 4 //定义数据库操作方法
 5 public interface UserDAO {
 6 //增加操作
 7 public void insert (User user) throws Exception;
 8 //修改操作
 9 public void update (User user) throws Exception;
10 //删除操作
11 public void delete (int userid) throws Exception;
12 //按ID查询
13 public User queryById(int userid) throws Exception;
14 //查询全部
15 public List queryAll() throws Exception;
16
17 }

UserDAOImpl.java

 1 package com.mhb;
 2
 3 import java.sql.PreparedStatement;
 4 import java.util.List;
 5
 6 public class UserDAOImpl implements UserDAO {
 7
 8 //添加操作
 9 public void insert(User user) throws Exception {
10 String sql = "INSERT INTO user(username,password) VALUES (?,?)";
11 PreparedStatement pstmt = null;
12 DataBaseConnection dbc = null;
13 //下面是针对数据库的具体操作
14 try{
15 dbc= new DataBaseConnection();
16 pstmt = dbc.getConnection().prepareStatement(sql);
17 pstmt.setString(1, user.getUsername());
18 pstmt.setString(2, user.getPassword());
19 //进行数据库更新
20 pstmt.executeUpdate();
21 pstmt.close();
22 }catch(Exception e){
23 throw new Exception ("操作出现异常");
24 }finally{
25 //关闭数据库
26 dbc.close();
27 }
28 }
29
30 public void delete(int userid) throws Exception {
31
32 }
33
34
35
36 public List queryAll() throws Exception {
37 return null;
38 }

DAOFactory.java

1 package com.mhb;
2
3 public class DAOFactory {
4 public static UserDAO getUserDAOInstance(){
5 return new UserDAOImpl();
6 }
7 }

MySql数据库中user表语句

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


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

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

添加记录AddUserDemo.jsp

 1 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
 2 <%@ page import="com.mhb.*" %>
 3
 4 <html>
 5   <head><title>添加用户</title></head>
 6
 7   <body>
 8 <form action="" method="post">
 9 <table>
10 <tr>
11 <td colspan="2">添加用户</td>
12 </tr>
13 <tr>
14 <td>用户姓名:</td>
15 <td><input type="text" name="username"></td>
16 </tr>
17 <tr>
18 <td>用户密码</td>
19 <td><input type="password" name="password"></td>
20 </tr>
21 <tr>
22 <td colspan="2">
23 <input type="submit" value="添加">
24 <input type="reset" value="重置">
25 </td>
26 </tr>
27 </table>
28 </form>
29
30       <%
31        //获取表单中输入的用户名以及密码
32        String userName = (String)request.getParameter("username");
33        String password = (String)request.getParameter("password");
34 //通过DAO工厂获得DAO实现类的实例
35 UserDAO userDAO = DAOFactory.getUserDAOInstance();
36 //设置需要添加的用户
37 User user = new User();
38 user.setUsername(userName);
39 user.setPassword(password);
40 //如果用户名密码不为空则添加入数据库
41 if(userName != null && userName != ""){
42 if(password != null && password != ""){
43 userDAO.insert(user);
44 }
45 }else{
46 out.print("用户名或密码不能为空!");
47 }
48 %>
49   </body>
50 </html>

浏览器显示


username:admin,password:123456

数据库显示

时间: 2024-10-19 01:29:50

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

DBCP数据库连接池连接mysql数据库的时候 出现连接问题

在部署的项目的时候发现两个问题 ,第一个问题不是太容易发现 ,因为我部署的时候没问题 ,但是产品的同事在跑流程的时候总是出现一个connetException异常  自己看了半天没发现什么问题 去网上查了一下 说是msql的连接默认是八个小时 第二个问题就是 自己这边的数据库 隔一段时间不用的话 会自动断开  查了一下资料 是dbcp连接mysql时出现的这个问题  实际上两个问题算是一个问题吧 自己配置了一下 这几天没报这样的错误 !算是解决了吧!  <bean id="dataSour

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

在网上查了很多,最后实现了.下面写一下过程: 首先,在WEBROOT/META-INF下建一个文件context.xml,内容为: <?xml version="1.0" encoding="UTF-8"?> <Context> <Resource name="jdbc/ConnectionPool" auth="Application" type="javax.sql.DataSour

如何用IDEA创建springboot(maven)并且整合mybatis连接mysql数据库和遇到的问题

1.New->Project 2.点击next 3.在Group栏输入组织名,Artifact就是项目名.其它选择默认就好,直接Next 4.添加依赖 5.修改您希望放项目的位置,点击finish,等待idea下载springboot项目模板和相关的依赖 项目构建完成后的目录结构 6.如果需要用mybatis连接mysql数据库 a.添加连接数据库的依赖(在pom.xml中添加以下内容,maven将自动把相关依赖放到maven仓库中,然后放到项目中) <!--连接数据库--><de

hibernate简单连接mysql数据库配置

使用hibernate连接mysql数据库 1:项目搭建好之后,在lib包中添加必要的jar包,和mysql数据库驱动jar包: jar包可以在hibernate的下载包(hibernate3.3.2.GA)中找到,这里所需要的jar包是: hibernate3.jar,lib/required目录下的所有jar包; 连接数据库所需要的jar包:mysql-connector-java-5.1.7-bin.jar; 如图: 2:jar包引入后编写实体类及映射文件: 实体类是xx.java文件;映

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

好久没有写博文了,写个简单的东西热热身,分享给大家. jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打交道非常基础的一个知识,也是比较接近底层的,在实际的工作中大家用得更多的其实还是比较成熟的框架,例如Hibernate.Mybatis. 但是作为这些成熟框架的底层的jdbc却也是我们应该去掌握的,只有了解了jdbc的增删改查,这样在以后如果有兴趣去研究Hibernate或者Mybatis的源代码的

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

连接mysql数据库的操作 有增删改查 用的包有 commons-lang3-3.5 mysql-connector-java-5.1.40-bin 但是实际上也就是 数据查询和数据处理两种 所以对数据库的操作DAO只有两种方法 package com.javaweb.dao; import java.lang.reflect.Field;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.Re

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

Java进阶(二十五)Java连接mysql数据库(底层实现) 前言 很长时间没有系统的使用java做项目了.现在需要使用java完成一个实验,其中涉及到java连接数据库.让自己来写,记忆中已无从搜索.特将之前使用的方法做一简单的总结.也能够在底层理解一下连接数据库的具体步骤. 实现 首先需要导入相关的jar包,我使用的为:mysql-connector-java-5.1.7-bin.jar. 下面来看一下我所使用的数据库连接方法类: MysqlUtil.java package cn.edu

Java 连接 MySQL 数据库

下载 MySQL 数据库:http://dev.mysql.com/downloads/mysql/ ,解压到本地即可 下载 jar 包:http://dev.mysql.com/downloads/connector/j/ ,下载 zip 压缩包 创建数据库并插入若干数据: create table mydb; use mydb; create table student(name varchar(8), no char(7)); insert into student values('zha

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

         分页查询信息       使用jdbc连接mysql数据库实现分页查询任务 通过mysql数据库提供的分页机制,实现商品信息的分页查询功能,将查询到的信息显示到jsp页面上. 本项目时一个简单的运用eclipse+jdbc+mysql的小程序. 连接的数据库名称为db_database11,属性如下: 1.创建名为com.pmf.bean的包,包中是名为Product的类,用于封装商品信息. 全部代码如下: package com.pmf.bean; /** * 商品 * */