java中dao层代码_[原创]java中DAO层 -电脑资料

一、信息系统的开发架构

客户层-------显示层-------业务层---------数据层---------数据库

1.客户层:客户层就是客户端,简单的来说就是浏览器,

2.显示层:JSP/Servlet,用于给浏览器显示。

3.业务层:对于数据层的原子操作进行整合。

4.数据层:对于数据库进行的原子操作,增加、删除等;

二、DAO(Data Access Object)介绍

DAO应用在数据层那块,用于访问数据库,对数据库进行操作的类。

三、DAO设计模式的结构

DAO设计模式一般分为几个类:

1.VO(Value Object):一个用于存放网页的一行数据即一条记录的类,比如网页要显示一个用户的信息,则这个类就是用户的类。

2.DatabaseConnection:用于打开和关闭数据库。

3.DAO接口:用于声明对于数据库的操作。

4.DAOImpl:必须实现DAO接口,真实实现DAO接口的函数,但是不包括数据库的打开和关闭。

5.DAOProxy:也是实现DAO接口,但是只需要借助DAOImpl即可,但是包括数据库的打开和关闭。

6.DAOFactory:工厂类,含有getInstance()创建一个Proxy类。

四、DAO的好处

DAO的好处就是提供给用户的接口只有DAO的接口,所以如果用户想添加数据,只需要调用create函数即可,不需要数据库的操作。

五、DAO包命名

对于DAO,包的命名和类的命名一定要有层次。

六、实例解析

1.Emp.java

[java] view plaincopyprint?

1. package org.vo;

2. import java.util.*;

3. public class Emp{

4.     private int empno;

5.     private String ename;

6.     private String job;

7.     private Date hireDate;

8.     private float sal;

9.     public Emp(){

10.

11.     }

12.     public int getEmpno(){

13.         return empno;

14.     }

15.     public void setEmpno(int empno){

16.         this.empno = empno;

17.     }

18.     public String getEname(){

19.         return ename;

20.     }

21.     public void setEname(String ename){

22.         this.ename = ename;

23.     }

24.     public Date getHireDate(){

25.         return hireDate;

26.     }

27.     public void setHireDate(Date hireDate){

28.         this.hireDate = hireDate;

29.     }

30.     public float getSal(){

31.         return sal;

32.     }

33.     public void setSal(float sal){

34.         this.sal = sal;

35.     }

36.     public String getJob(){

37.         return job;

38.     }

39.     public void setJob(String job){

40.         this.job = job;

41.     }

42. }

package org.vo;import java.util.*;public class Emp{ private int empno; private String ename; private String job; private Date hireDate; private float sal; public Emp(){ } public int getEmpno(){ return empno; } public void setEmpno(int empno){ this.empno = empno; } public String getEname(){ return ename; } public void setEname(String ename){ this.ename = ename; } public Date getHireDate(){ return hireDate; } public void setHireDate(Date hireDate){ this.hireDate = hireDate; } public float getSal(){ return sal; } public void setSal(float sal){ this.sal = sal; } public String getJob(){ return job; } public void setJob(String job){ this.job = job; }}

2.DatabaseConnection.java

[java] view plaincopyprint?

1. package org.dbc;

2. import java.sql.*;

3. public class DatabaseConnection{

4.     private Connection con = null;

5.     private static final String DRIVER = "com.mysql.jdbc.Driver";

6.     private static final String USER = "root";

7.     private static final String URL = "jdbc:mysql://localhost:3306/mldn";

8.     private static final String PASS = "12345";

9.     public DatabaseConnection()throws Exception{

10.         Class.forName(DRIVER);

11.         con = DriverManager.getConnection(URL,USER,PASS);

12.     }

13.     public Connection getConnection()throws Exception{

14.         return con;

15.     }

16.     public void close()throws Exception{

17.         if(con!=null){

18.             con.close();

19.         }

20.     }

21. }

package org.dbc;import java.sql.*;public class DatabaseConnection{ private Connection con = null; private static final String DRIVER = "com.mysql.jdbc.Driver"; private static final String USER = "root"; private static final String URL = "jdbc:mysql://localhost:3306/mldn"; private static final String PASS = "12345"; public DatabaseConnection()throws Exception{ Class.forName(DRIVER); con = DriverManager.getConnection(URL,USER,PASS); } public Connection getConnection()throws Exception{ return con; } public void close()throws Exception{ if(con!=null){ con.close(); } }}

3.IEmpDAO.java

[java] view plaincopyprint?

1. package org.dao;

2. import java.util.List;

3. import org.vo.*;

4. public interface IEmpDAO{

5.     public boolean doCreate(Emp emp)throws Exception;

6.     public ListfindAll()throws Exception;

7.     public Emp findById(int empno)throws Exception;

8. }

package org.dao;import java.util.List;import org.vo.*;public interface IEmpDAO{ public boolean doCreate(Emp emp)throws Exception; public ListfindAll()throws Exception; public Emp findById(int empno)throws Exception;}

4.EmpDAOImpl.java

[java] view plaincopyprint?

1. package org.dao.impl;

2. import org.dao.*;

3. import java.sql.*;

4. import org.vo.*;

5. import java.util.*;

6. public class EmpDAOImpl implements IEmpDAO{

7.     private Connection con;

8.     private PreparedStatement stat = null;

9.     public EmpDAOImpl(Connection con){

10.         this.con = con;

11.     }

12.     public boolean doCreate(Emp emp)throws Exception{

13.         String sql = "INSERT INTO emp(empno,ename,job,hiredate,sal) VALUES(?,?,?,?,?)";

14.         stat = con.prepareStatement(sql);

15.         stat.setInt(1,emp.getEmpno());

16.         stat.setString(2,emp.getEname());

17.         stat.setString(3,emp.getJob());

18.         stat.setDate(4,new java.sql.Date(emp.getHireDate().getTime()));

19.         stat.setFloat(5,emp.getSal());

20.         int update = stat.executeUpdate();

21.         if(update>0){

22.             return true;

23.         }

24.         else{

25.             return false;

26.         }

27.     }

28.     public ListfindAll()throws Exception{

29.         String sql = "SELECT empno,ename,job,hiredate,sal FROM emp";

30.         stat = con.prepareStatement(sql);

31.         ResultSet rs = stat.executeQuery();

32.         Emp emp = null;

33.         Listlist = new ArrayList();

34.         while(rs.next()){

35.             int empno = rs.getInt(1);

36.             String ename = rs.getString(2);

37.             String job = rs.getString(3);

38.             float sal = rs.getFloat(5);

39.             emp = new Emp();

40.             emp.setEmpno(empno);

41.             emp.setEname(ename);

42.             emp.setJob(job);

43.             emp.setHireDate(rs.getDate(4));

44.             emp.setSal(sal);

45.             list.add(emp);

46.         }

47.         return list;

48.     }

49.     public Emp findById(int empno)throws Exception{

50.         String sql = "SELECT empno,ename,job,hiredate,sal FROM emp WHERE empno=?";

51.         stat = con.prepareStatement(sql);

52.         stat.setInt(1,empno);

53.         ResultSet rs = stat.executeQuery();

54.         Emp emp = null;

55.         if(rs.next()){

56.             String ename = rs.getString(2);

57.             String job = rs.getString(3);

58.             float sal = rs.getFloat(5);

59.             emp = new Emp();

60.             emp.setEmpno(empno);

61.             emp.setEname(ename);

62.             emp.setJob(job);

63.             emp.setHireDate(rs.getDate(4));

64.             emp.setSal(sal);

65.         }

66.         return emp;

67.     }

68. }

package org.dao.impl;import org.dao.*;import java.sql.*;import org.vo.*;import java.util.*;public class EmpDAOImpl implements IEmpDAO{ private Connection con; private PreparedStatement stat = null; public EmpDAOImpl(Connection con){ this.con = con; } public boolean doCreate(Emp emp)throws Exception{ String sql = "INSERT INTO emp(empno,ename,job,hiredate,sal) VALUES(?,?,?,?,?)"; stat = con.prepareStatement(sql); stat.setInt(1,emp.getEmpno()); stat.setString(2,emp.getEname()); stat.setString(3,emp.getJob()); stat.setDate(4,new java.sql.Date(emp.getHireDate().getTime())); stat.setFloat(5,emp.getSal()); int update = stat.executeUpdate(); if(update>0){ return true; } else{ return false; } } public ListfindAll()throws Exception{ String sql = "SELECT empno,ename,job,hiredate,sal FROM emp"; stat = con.prepareStatement(sql); ResultSet rs = stat.executeQuery(); Emp emp = null; Listlist = new ArrayList(); while(rs.next()){ int empno = rs.getInt(1); String ename = rs.getString(2); String job = rs.getString(3); float sal = rs.getFloat(5); emp = new Emp(); emp.setEmpno(empno); emp.setEname(ename); emp.setJob(job); emp.setHireDate(rs.getDate(4)); emp.setSal(sal); list.add(emp); } return list; } public Emp findById(int empno)throws Exception{ String sql = "SELECT empno,ename,job,hiredate,sal FROM emp WHERE empno=?"; stat = con.prepareStatement(sql); stat.setInt(1,empno); ResultSet rs = stat.executeQuery(); Emp emp = null; if(rs.next()){ String ename = rs.getString(2); String job = rs.getString(3); float sal = rs.getFloat(5); emp = new Emp(); emp.setEmpno(empno); emp.setEname(ename); emp.setJob(job); emp.setHireDate(rs.getDate(4)); emp.setSal(sal); } return emp; }}

5.EmpDAOProxy.java

[java] view plaincopyprint?

1. package org.dao.impl;

2. import org.dao.*;

3. import java.sql.*;

4. import org.vo.*;

5. import java.util.*;

6. import org.dbc.*;

7. public class EmpDAOProxy implements IEmpDAO{

8.     private DatabaseConnection dbc;

9.     private IEmpDAO dao = null;

10.     public EmpDAOProxy()throws Exception{

11.         dbc = new DatabaseConnection();

12.         dao = new EmpDAOImpl(dbc.getConnection());

13.     }

14.     public boolean doCreate(Emp emp)throws Exception{

15.         boolean flag = false;

16.         if(dao.findById(emp.getEmpno())==null){

17.             flag = dao.doCreate(emp);

18.         }

19.         dbc.close();

20.         return flag;

21.     }

22.     public ListfindAll()throws Exception{

23.         Listlist = dao.findAll();

24.         dbc.close();

25.         return list;

26.     }

27.     public Emp findById(int empno)throws Exception{

28.         Emp emp = dao.findById(empno);

29.         dbc.close();

30.         return emp;

31.     }

32. }

package org.dao.impl;import org.dao.*;import java.sql.*;import org.vo.*;import java.util.*;import org.dbc.*;public class EmpDAOProxy implements IEmpDAO{ private DatabaseConnection dbc; private IEmpDAO dao = null; public EmpDAOProxy()throws Exception{ dbc = new DatabaseConnection(); dao = new EmpDAOImpl(dbc.getConnection()); } public boolean doCreate(Emp emp)throws Exception{ boolean flag = false; if(dao.findById(emp.getEmpno())==null){ flag = dao.doCreate(emp); } dbc.close(); return flag; } public ListfindAll()throws Exception{ Listlist = dao.findAll(); dbc.close(); return list; } public Emp findById(int empno)throws Exception{ Emp emp = dao.findById(empno); dbc.close(); return emp; }}

6.DAOFactory.java

[java] view plaincopyprint?

1. package org.dao.factory;

2. import org.dao.*;

3. import java.sql.*;

4. import org.vo.*;

5. import java.util.*;

6. import org.dbc.*;

7. import org.dao.impl.*;

8. public class DAOFactory{

9.     public static IEmpDAO getInstance(){

10.         IEmpDAO dao = null;

11.         try{

12.             dao = new EmpDAOProxy();

13.         }

14.         catch(Exception e){

15.             e.printStackTrace();

16.         }

17.         return dao;

18.     }

19. }

package org.dao.factory;import org.dao.*;import java.sql.*;import org.vo.*;import java.util.*;import org.dbc.*;import org.dao.impl.*;public class DAOFactory{ public static IEmpDAO getInstance(){ IEmpDAO dao = null; try{ dao = new EmpDAOProxy(); } catch(Exception e){ e.printStackTrace(); } return dao; }}

7.TestDAO.java

[java] view plaincopyprint?

1. package org.dao.test;

2. import org.dao.factory.*;

3. import org.vo.*;

4. import org.dao.*;

5. public class TestDAO{

6.     public static void main(String args[])throws Exception{

7.         Emp emp = null;

8.         for(int i=0;i<5;i++){

9.             emp = new Emp();

10.             emp.setEmpno(i);

11.             emp.setEname("xiazdong-"+i);

12.             emp.setJob("stu-"+i);

13.             emp.setHireDate(new java.util.Date());

14.             emp.setSal(500*i);

15.             DAOFactory.getInstance().doCreate(emp);

16.         }

17.     }

18. }

package org.dao.test;import org.dao.factory.*;import org.vo.*;import org.dao.*;public class TestDAO{ public static void main(String args[])throws Exception{ Emp emp = null; for(int i=0;i<5;i++){ emp = new Emp(); emp.setEmpno(i); emp.setEname("xiazdong-"+i); emp.setJob("stu-"+i); emp.setHireDate(new java.util.Date()); emp.setSal(500*i); DAOFactory.getInstance().doCreate(emp); } }}

通过DAO设计模式,可以在JSP中屏蔽了数据库连接的操作,达到JSP只负责显示的效果,[原创]java中DAO层》(https://www.unjs.com)。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值