zoukankan      html  css  js  c++  java
  • 分层结构DAO层

    DAO(Date Access Object) 模型就是写一个类,把访问数据库的代码封装起来,DAO在数据库与业务逻辑(Service)之间。

    1、实体域,即操作的对象,例如我们操作的表示user表,那么就需要先写一个User类;
    2、DAO模型需要先提供一个DAO接口;
    3、然后再提供一个DAO接口的实现类;
    4、再编写一个DAO工厂,Service通过工厂来获取DAO

    一.   BaseDAO类    主要连接数据库  和数据库之间进行交互

    public class BaseDAO {
       private static final String driver="com.mysql.jdbc.Driver";
       private static final String url="jdbc:mysql:///newss2230";
       private static final String username="root";
       private static final String password="123";
      
       Connection con;
       PreparedStatement ps;
       ResultSet rs;
      
      
       public Connection getConnection() throws Exception{
        Class.forName(driver);
        if(con==null||con.isClosed()){
         con=DriverManager.getConnection(url, username, password);
        }
        /*Context context=new InitialContext();
        DataSource ds=(DataSource)context.lookup("java:comp/env/news");
        con=ds.getConnection();*/
        return con;
       }
       public int executeUpdate(String sql,Object...paras) throws Exception{
        getConnection();
         ps= con.prepareStatement(sql);
         for (int i = 0; i < paras.length; i++) {
       ps.setObject(i+1, paras[i]);
      }
         int count = ps.executeUpdate();
         return count;
       }
      
       public ResultSet executeQuery(String sql,Object...paras) throws Exception{ 
        getConnection();
         ps= con.prepareStatement(sql);
         for (int i = 0; i < paras.length; i++) {
       ps.setObject(i+1, paras[i]);
      }
         return ps.executeQuery();
       }
       public void closeResource(){
        try {
         if(rs!=null){
          rs.close();
         }
         if(ps!=null){
          ps.close();
         }
         if(con!=null){
          con.close();
         }
     } catch (Exception e) {
     }
      
       }
      
    }

    二.IUserInfoDAO接口(登陆接口)

    public interface IUserInfoDAO {
       //01.写一个登录系统的方法
     public UserInfo isLogin(UserInfo info) throws Exception;
     //02.写一个查询所有用户信息的方法
     public List<UserInfo> findAll() throws Exception;
     public boolean delete(Integer uid) throws Exception;
     public boolean addUser(UserInfo info)throws Exception;
     public UserInfo updateshow(Integer uid)throws Exception;
     public boolean updateUser(UserInfo userinfo)throws Exception;
    }

    三.UserInfoDAOImpl实现类

    public class UserInfoDAOImpl extends BaseDAO implements IUserInfoDAO {
     @Test
     public void testLogin() throws Exception{
      UserInfo info=new UserInfo();
      info.setUname("admin");
      info.setUpwd("admin");
      UserInfo result=isLogin(info);
      if (result!=null) {
       System.out.println("success");
      }else{
       System.out.println("failed");
      }
      
     }
     
     
     @Override
     public UserInfo isLogin(UserInfo info) throws Exception {
         String sql="select * from userinfo where uname=? and upwd=?";
         Object[] paras={info.getUname(),info.getUpwd()};
         ResultSet rs = executeQuery(sql, paras);
        
         UserInfo userinfo=null;
         if(rs!=null){
          if(rs.next()){
           //如果有Data ,取出该行  ,每个列的值,赋值给单个UserInfo实例的对应属性
           userinfo=new UserInfo();
           userinfo.setUid(rs.getInt("uid"));
           userinfo.setUname(rs.getString("uname"));
           userinfo.setUpwd(rs.getString("upwd"));
          }
          closeResource();
         }
      return userinfo;
     }


     @Override
     public List<UserInfo> findAll() throws Exception {
      List<UserInfo> list=new ArrayList<UserInfo>();
      String sql="select * from userinfo";
      ResultSet rs = executeQuery(sql);
      UserInfo userinfo=null;
         if(rs!=null){
          while(rs.next()){
           //如果有Data ,取出该行  ,每个列的值,赋值给单个UserInfo实例的对应属性
           userinfo=new UserInfo();
           userinfo.setUid(rs.getInt("uid"));
           userinfo.setUname(rs.getString("uname"));
           userinfo.setUpwd(rs.getString("upwd"));
           list.add(userinfo);
          }
          closeResource();
         }
      return list;
     }


     @Override
     public boolean delete(Integer uid) throws Exception {
      boolean flag=false;
      String sql="delete from userinfo where uid=?";
      int count = executeUpdate(sql, uid);
      if (count>0) {
       flag=true;
      }
      return flag;
     }


     @Override
     public boolean addUser(UserInfo info) throws Exception {
      boolean flag=false;//添加失败
      String sql="insert into userinfo(uname,upwd) values(?,?)";
      Object[] paras={info.getUname(),info.getUpwd()};
      int count = executeUpdate(sql, paras);
      if (count>0) {
       flag=true;
      }
      return flag;
     }


     @Override
     /**
      * 根据主键获取单个对象
      */
     public UserInfo updateshow(Integer uid) throws Exception {
      UserInfo userinfo = new UserInfo();
      String sql="select * from userinfo where uid = ?";
      ResultSet rs = this.executeQuery(sql, uid);
      if(rs!=null){
       if(rs.next()){
        userinfo.setUid(rs.getInt("uid"));
        userinfo.setUname(rs.getString("uname"));
        userinfo.setUpwd(rs.getString("upwd"));
       }
       closeResource();
      }
      return userinfo;
     }


     @Override
     public boolean updateUser(UserInfo userinfo) throws Exception {
      boolean flag=false;
      String sql="update userinfo set uname=?,upwd=? where uid=?";
      Object[] paras={userinfo.getUname(),userinfo.getUpwd(),userinfo.getUid()};
      int count = executeUpdate(sql, paras);
      if (count>0) {
       flag=true;
      }
      return flag;
     }

    }

  • 相关阅读:
    防删没什么意思啊,直接写废你~
    绝大多数情况下,没有解决不了的问题,只有因为平时缺少练习而惧怕问题的复杂度,畏惧的心理让我们选择避让,采取并不那么好的方案去解决问题
    Java 模拟面试题
    Crossthread operation not valid: Control 'progressBar1' accessed from a thread other than the thread it was created on
    一步步从数据库备份恢复SharePoint Portal Server 2003
    【转】理解 JavaScript 闭包
    Just For Fun
    The database schema is too old to perform this operation in this SharePoint cluster. Please upgrade the database and...
    Hello World!
    使用filter筛选刚体碰撞
  • 原文地址:https://www.cnblogs.com/1998A/p/9469700.html
Copyright © 2011-2022 走看看