dao连接mysql数据库引擎_DAO设计模式 -- 使用数据库连接类连接MySql数据库并实现添加用户...

本文介绍了DAO设计模式在J2EE中的应用,详细讲解了数据库连接类、VO类、DAO接口、DAO实现类和DAO工厂类的职责。通过一个示例,展示了如何使用DAO实现类连接MySQL数据库,创建UserDAO接口和实现类,实现用户数据的添加操作。最后,给出了添加记录的AddUserDemo.jsp代码,展示了如何通过DAO工厂获取DAO实例并执行插入操作。
摘要由CSDN通过智能技术生成

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 packagecom.mhb;2 import java.sql.*;3

4 //主要功能就是连接数据库,关闭数据库

5 public classDataBaseConnection {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 publicDataBaseConnection(){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 publicConnection getConnection(){29 returnconn;30 }31

32 //关闭数据库

33 public voidclose(){34

35 try{36 conn.close();37 } catch(SQLException e) {38 System.out.println("数据库连接关闭失败!");39 }40 }41 }

User.java

1 packagecom.mhb;2

3 public classUser {4 //用户ID

5 private intuserid;6 //用户姓名

7 privateString username;8 //用户密码

9 privateString password;10

11 public intgetUserid() {12 returnuserid;13 }14 public void setUserid(intuserid) {15 this.userid =userid;16 }17 publicString getUsername() {18 returnusername;19 }20 public voidsetUsername(String username) {21 this.username =username;22 }23 publicString getPassword() {24 returnpassword;25 }26 public voidsetPassword(String password) {27 this.password =password;28 }29 }

UserDAO.java

1 packagecom.mhb;2 import java.util.*;3

4 //定义数据库操作方法

5 public interfaceUserDAO {6 //增加操作

7 public void insert (User user) throwsException;8 //修改操作

9 public void update (User user) throwsException;10 //删除操作

11 public void delete (int userid) throwsException;12 //按ID查询

13 public User queryById(int userid) throwsException;14 //查询全部

15 public List queryAll() throwsException;16

17 }

UserDAOImpl.java

1 packagecom.mhb;2

3 importjava.sql.PreparedStatement;4 importjava.util.List;5

6 public class UserDAOImpl implementsUserDAO {7

8 //添加操作

9 public void insert(User user) throwsException {10 String sql = "INSERT INTO user(username,password) VALUES (?,?)";11 PreparedStatement pstmt = null;12 DataBaseConnection dbc = null;13 //下面是针对数据库的具体操作

14 try{15 dbc= newDataBaseConnection();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) throwsException {31

32 }33

34

35

36 public List queryAll() throwsException {37 return null;38 }

DAOFactory.java

1 packagecom.mhb;2

3 public classDAOFactory {4 public staticUserDAO getUserDAOInstance(){5 return newUserDAOImpl();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

2

3

4

5

添加用户

6

7

8

9

10

11

添加用户

12

13

14

用户姓名:

15

16

17

18

用户密码

19

20

21

22

23

24

25

26

27

28

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 = newUser();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

50

浏览器显示

c859a6a5cf3bc55dcf61b58b90049392.png

username:admin,password:123456

数据库显示

9548be11833214f828725e4c2d3cb9bd.png

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值