Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 319|回复: 0

[设计模式学习]小结设计模式之DAO写法

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-11-4 00:01:14 | 显示全部楼层 |阅读模式
    DAO模式普通写法(步骤)
    第一步:封装好类对象
    例如:
        package com.sk.object;
         [/code]     public class Users {
        private String userName="";
        private String passWord="";
         public Users(String userName,String passWord){
          this.userName=userName;
          this.passWord=passWord;
         }
         public String getPassWord() {
          return passWord;
         }
          public void setPassWord(String passWord) {
           this.passWord = passWord;
          }
         public String getUserName() {
          return userName;
         }
         public void setUserName(String userName) {
          this.userName = userName;
         }
        }
         [/code]  第二步:写类对象所对应的DAO接口
       1.此接口规定各种业务逻辑方法
    例如:
        package com.sk.dao;
         [/code]     import com.sk.object.Users;
         [/code]      public interface UserDAO {
          public Users getUser(String userName);
         }
         [/code]  
    第三步:写此DAO接口所对应的各种(基于数据库、文本。。。)实现类,比如:
       1.此类为单态类(构造函数私有,通过方法返回此类的实例)      例如:
       {
        private UserDAOImp(){}//私有构造    public static UserDAOImp getUserDaoImp(){
         return new UserDAOImp();
        } //通过此方法得到UserDAOImp的实例
       }
       2.此类实现了db操作
    例如:
        package com.sk.dao.imp;
         [/code]     import java.sql.Connection;
        import java.sql.DriverManager;
        import java.sql.PreparedStatement;
        import java.sql.ResultSet;
        import java.sql.SQLException;
        import java.sql.Statement;
         [/code]     import com.sk.dao.UserDAO;
        import com.sk.object.Users;
         [/code]     public class UserDAOImp implements UserDAO {
         private Connection conn=null;
         private PreparedStatement ps=null;
         private String url="jdbc:odbc:users;databaseName=users;user=sa;password=";
         private String sql="";
         private ResultSet rs=null;
         
          private UserDAOImp(){} //私有构造
          public static UserDAOImp getUserDaoImp(){//静态方法返回实例
           return new UserDAOImp();
          }
          private Connection getConnection() throws ClassNotFoundException, SQLException{
           Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
           conn=DriverManager.getConnection(url);
           return conn;
          }
          public Users getUser(String userName) {
           // TODO Auto-generated method stub
            try {
             this.getConnection();
             sql="select username,password from users where username=?";
             ps=conn.prepareStatement(sql);
             ps.setString(1, userName);
             rs=ps.executeQuery();
             if(rs.next()){
              return new Users(rs.getString("username"), rs.getString("password"));
             }
            } catch (ClassNotFoundException e) {
             // TODO Auto-generated catch block
             e.printStackTrace();
            } catch (SQLException e) {
             // TODO Auto-generated catch block
             e.printStackTrace();
            }finally{
             if(rs!=null){
              try {
               rs.close();
              } catch (SQLException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
              }
             }
             if(ps!=null){
              try {
               ps.close();
              } catch (SQLException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
              }
             }
             if(conn!=null){
              try{
               conn.close();
              }catch(SQLException e){
               e.printStackTrace();
              }
             }
            }
           return null;
          }
         [/code]     }
         
    [/code]  第四步:写工厂(制造dao接口实现的静态方法,既是写制造上面第三步类的工厂)

      1.public static UserDAO getUserDAO(){
       return UserDAOImp.getUserDaoImp();
       }
         [/code]  例如:
        package com.sk.factory;
         [/code]     import com.sk.dao.UserDAO;
        import com.sk.dao.imp.UserDAOImp;
         [/code]     public class DAOFactory {
          public static UserDAO getUserDAO(){
           return UserDAOImp.getUserDaoImp();
          }
        }
         [/code]  第五步:写service类(业务逻辑操作)
    例如:
        package com.sk.service;
         [/code]     import com.sk.dao.UserDAO;
        import com.sk.factory.DAOFactory;
        import com.sk.object.Users;
         [/code]     public class UserDAOService {
         public Users checkLogin(String userName,String passWord){
          UserDAO userDAO=DAOFactory.getUserDAO();
          Users user= userDAO.getUser(userName);
          if(user!=null){
           if(user.getPassWord().equals(passWord)){
            return user;
           }
          }
          return null;
         }
         [/code]     }
         [/code]  其余的功能各自添加即可(调用service的方法);
    例如:
        package com.sk.view;
         [/code]     import java.io.IOException;
        import java.io.PrintWriter;
         [/code]     import javax.Servlet.ServletException;
        import javax.servlet.http.HttpServlet;
        import javax.servlet.http.HttpServletRequest;
        import javax.servlet.http.HttpServletResponse;
         [/code]     import com.sk.service.UserDAOService;
         [/code]     public class ChkUser extends HttpServlet {
         [/code]          public void destroy() {
           super.destroy(); // Just puts "destroy" string in log
           // Put your code here
          }
         [/code]
          public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
         [/code]        response.setContentType("text/HTML");
           PrintWriter out = response.getWriter();
           String userName=request.getParameter("userName");
           String passWord=request.getParameter("passWord");
           UserDAOService userDAOService=new UserDAOService();
           if( userDAOService.checkLogin(userName, passWord)!=null){
            out.println("OK");
           }
           else {
            out.println("error");
           }
          }
         [/code]       public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
           doGet(request, response);
          }
         [/code]       public void init() throws ServletException {
           // Put your code here
          }
         [/code]     }
         [/code]
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-2-25 13:31 , Processed in 0.358196 second(s), 50 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表