DAO模式应用实例

首先在数据库中建好一个表。

然后创建一个MsterDao类的接口

 1 package com.beiwo.epte.dao;
 2 
 3 import com.beiwo.epte.entity.Master;
 4 
 5 public interface MasterDao extends BaseDao{
 6 
 7     /**
 8      * 保存主人
 9      * @param pet
10      * @return
11      */
12     int save(Master master);
13     
14     
15     /**
16      * 删除主人
17      * @param pet
18      * @return
19      */
20     int del(Master master);
21     
22     /**
23      * 更新主人
24      * @param pet
25      * @return
26      */
27     int update(Master master);
28     
29     /**
30      * 根据Master对象进行查询
31      * @param master
32      * @return
33      */
34     Master findMaster(Master master);
35     
36 }

然后创建这个MasterDao的实现类

 1 package com.beiwo.epte.dao.impl;
 2 
 3 import java.sql.Connection;
 4 import java.sql.PreparedStatement;
 5 
 6 import com.beiwo.epte.dao.MasterDao;
 7 import com.beiwo.epte.entity.Master;
 8 import com.beiwo.epte.util.DBUtils;
 9 import java.sql.ResultSet;
10 
11 public class MasterDaoMySqllmpl extends BaseDaoImpl implements MasterDao {
12 
13     @Override
14     public int save(Master master) {
15         // TODO Auto-generated method stub
16         return 0;
17     }
18 
19     @Override
20     public int del(Master master) {
21         // TODO Auto-generated method stub
22         return 0;
23     }
24 
25     @Override
26     public int update(Master master) {
27         // TODO Auto-generated method stub
28         return 0;
29     }
30 
31     @Override
32     public Master findMaster(Master master) {
33         Master master2 = null;
34 
35         Connection connection = null;
36         PreparedStatement pastmt = null;
37         ResultSet rSet = null;
38 
39         String sql = "SELECT * FROM master WHERE loginId=? AND password=?";
40 
41         try {
42             connection = DBUtils.getConn();
43             pastmt = connection.prepareStatement(sql);
44             pastmt.setString(1, master.getLoginId());
45             pastmt.setString(2, master.getPassword());
46 
47             rSet = pastmt.executeQuery();
48             //指针下移
49             if (rSet.next()) {
50                 master2 = new Master();
51                 master2.setId(rSet.getInt("id"));
52                 master2.setLoginId(rSet.getString("loginId"));
53                 master2.setPassword(rSet.getString("password"));
54 
55             }
56         } catch (Exception e) {
57             // TODO: handle exception
58         } finally {
59             DBUtils.closeAll(rSet, pastmt, connection);
60 
61         }
62 
63         return master2;
64     }
65 
66 }

创建Master的实体类

 1 package com.beiwo.epte.entity;
 2 
 3 import java.io.Serializable;
 4 
 5 public class Master implements Serializable{
 6 
 7     private int id;  //ID
 8     private String loginId;//用户名
 9     private String password;//密码
10     public int getId() {
11         return id;
12     }
13     public void setId(int id) {
14         this.id = id;
15     }
16     public String getLoginId() {
17         return loginId;
18     }
19     public void setLoginId(String loginId) {
20         this.loginId = loginId;
21     }
22     public String getPassword() {
23         return password;
24     }
25     public void setPassword(String password) {
26         this.password = password;
27     }
28     
29 }

数据库的帮助类

 1 package com.beiwo.epte.util;
 2 
 3 import java.sql.Connection;
 4 import java.sql.DriverManager;
 5 import java.sql.ResultSet;
 6 import java.sql.Statement;
 7 import java.util.ResourceBundle;
 8 
 9 /**
10  * 数据库的帮助类
11  * 
12  * @author beiwo
13  *
14  */
15 public class DBUtils {
16 
17     private static String driverClass;
18     private static String url;
19     private static String user;
20     private static String password;
21     
22     static{
23         ResourceBundle rb=ResourceBundle.getBundle("jdbc");
24         driverClass=rb.getString("driverClass");
25         url=rb.getString("url");
26         user=rb.getString("user");
27         password=rb.getString("password");
28         
29         try {
30             Class.forName(driverClass);
31         } catch (ClassNotFoundException e) {
32             e.printStackTrace();
33         }
34     }
35     
36 
37     public static Connection getConn() throws Exception {
38         return DriverManager.getConnection(url, user, password);
39     }
40     
41     
42     public static void closeAll(ResultSet rs,Statement stmt,Connection conn){
43         //關閉資源
44         if(null!=rs){
45             try {
46                 rs.close();
47             } catch (Exception e) {
48                 e.printStackTrace();
49             }
50         }
51         if(null!=stmt){
52             try {
53                 stmt.close();
54             } catch (Exception e) {
55                 e.printStackTrace();
56             }
57         }
58         
59         if(null!=conn){
60             try {
61                 conn.close();
62             } catch (Exception e) {
63                 e.printStackTrace();
64             }
65         }
66     }
67     
68     
69     
70 
71 }

然后再创建一个接口声明一个登陆的方法

1 package com.beiwo.epte.service;
2 
3 public interface MsterService {
4     
5     //登陆
6     public void login();
7     
8 
9 }

然后创建一个实现类来实现以下这个登陆的方法

 1 package com.beiwo.epte.service.impl;
 2 
 3 import java.util.Scanner;
 4 
 5 import com.beiwo.epte.dao.MasterDao;
 6 import com.beiwo.epte.dao.impl.MasterDaoMySqllmpl;
 7 import com.beiwo.epte.entity.Master;
 8 import com.beiwo.epte.service.MsterService;
 9 
10 public class MasterServiceImpl implements MsterService{
11 
12     Master master = null;
13     @Override
14     public void login() {
15         
16         Scanner scanner = new Scanner(System.in);
17         
18         System.out.println("请输入用户名:");
19         String loginId = scanner.next();
20         
21         System.out.println("请输入密码:");
22         String password = scanner.next();
23         
24         MasterDao masterDao = new MasterDaoMySqllmpl();
25         Master master2 = new Master();
26         master2.setLoginId(loginId);
27         master2.setPassword(password);
28         
29         master=masterDao.findMaster(master2);
30         
31         if (null!=master) {
32             System.out.println("登陆成功");
33         } else {
34             System.out.println("登陆失败");
35         }
36         
37     }
38 }

最后创建一个测试类来调用一下这个方法,只要是输入正确都可以登陆成功。

 1 package com.beiwo.epte.test;
 2 
 3 import org.junit.Test;
 4 
 5 import com.beiwo.epte.service.MsterService;
 6 import com.beiwo.epte.service.impl.MasterServiceImpl;
 7 
 8 public class TestMasterDao {
 9     @Test
10     public void testLogin(){
11         MsterService masterService = new MasterServiceImpl();
12         masterService.login();//调用登陆的方法
13         
14     }
15 }
原文地址:https://www.cnblogs.com/lizixiansheng/p/6178196.html