zoukankan      html  css  js  c++  java
  • 刚刚,改造了下BaseDao……

    今天在上课的时候,带着学生们写底层的jdbc连接数据库并且对数据表进行增删改查,写的那就一个痛苦啊……

    从创建实体类到写Dao层代码再到表现层的Jsp页面,    写了好久好久……

    终于写完了!!!

    其实吧,主要还是DaoImpl层的代码写的太多,代码过于臃肿,反而BaseDao这个“工具类”却写的一点点。

    于是,这不刚刚就把这个BaseDao改进了一下,将凡是公共可以共用的代码都提到了BaseDao中,DaoImpl层光写所需要实现的sql语句和对应的参数即可,剩下的任务由BaseDao去执行。

    下面是BaseDao的代码:

    package org.dao;
    
    import java.sql.*;
    import java.util.List;
    
    import com.sun.org.glassfish.external.statistics.annotations.Reset;
    
    
    /**
     * 
     * @author 24519
     * 连接数据库的工作类
     *
     */
    public class BaseDaoNew {
      
      private Connection conn = null;
      private PreparedStatement pre;
      private ResultSet rs;
      //连接数据库
      public Connection getConn(){
        try{
          //加载驱动
          Class.forName("com.mysql.jdbc.Driver");
          //数据库连接字符串
          String url
           = "jdbc:mysql://localhost:3306/schooldb?user=root&password=root";
          //连接数据库
          conn = DriverManager.getConnection(url);
        }catch(Exception ex){
          ex.printStackTrace();
        }
        return conn;
      }
      
      //增删改
      public int ExecuteUpdate(String sql,List params) throws SQLException{
        int rel = 0;
        conn = getConn();
          pre = conn.prepareStatement(sql);
          if(params!=null){
            for(int i = 0;i<params.size();i++){
              pre.setObject(i+1, params.get(i));
            }
          }
          rel = pre.executeUpdate();
        
        return rel;
      }
      
      //查询
      public ResultSet ExecuteQuerty(String sql,List params) throws SQLException{
        conn = getConn();
        pre = conn.prepareStatement(sql);
        if(params!=null){
          for(int i = 0;i<params.size();i++){
            pre.setObject(i+1, params.get(i));
          }
        }
        
        return pre.executeQuery();
        
      }
      
        
        
      
      
      //关闭连接
      public void closeConn(Connection conn,
              PreparedStatement pre,ResultSet rs){
          try {
            if(rs!=null){
              rs.close();
            }
            if(pre!=null){
              pre.close();
            }
            if(conn!=null){
              conn.close();
            }
          } catch (SQLException e) {
            e.printStackTrace();
        }
        
      }
      
      
    
    }

    可以看得出来,我们将连接数据库,增删改、查询以及关闭连接都提取成独立的方法,在Impl层直接调用对应的是方法即可。

    @Override
      public Student login(String name, String pass,String info){
        Student student = new Student();
        String sql = "select * from student where sname = ? and spass = ?";
        BaseDaoNew base1 = new BaseDaoNew();
        List<Object> params = new ArrayList<Object>();
        params.add(name);
        params.add(pass);
        try {
          rs = base1.ExecuteQuerty(sql, params);
          while(rs.next()){
            student.setSid(rs.getInt(1));
            student.setSname(rs.getString(2));
            student.setSphone(rs.getString(3));
            student.setSpass(rs.getString(4));
            student.setSaddress(rs.getString(5));
            student.setSage(rs.getInt(6));
          }
        } catch (SQLException e) {
          e.printStackTrace();
        }finally{
          base1.closeConn(conn, pre, rs);
        }
        return student;

    分享几个花拳绣腿的网页布局!

    2020-11-10

    常用CSS属性整理

    2020-11-09

    jsp的内置对象

    2020-11-08

    今天拍了一些照片!

    2020-11-09

    我的职校新生活

    2020-11-07

    今天,我们来抽个奖!!!!!

    2020-11-06

    今天 ,给大家变个魔术!!!

    2020-11-05

    点分享

    点点赞

    点在看

  • 相关阅读:
    在C#程序设计中使用Win32类库
    Quartz.Net学习笔记(一)
    XDView网络视频监控
    Quartz.Net学习笔记(二) Jobs And Triggers
    关于web.config中<customErrors>节点说明
    业余水准,给朋友设计的LOGO
    JS 获取浏览器、显示器 窗体等宽度和高度【转载】
    Quartz.Net学习笔记(三) Jobs And Triggers再深入
    自己asp.net项目错误处理机制
    asp.net错误处理机制
  • 原文地址:https://www.cnblogs.com/a1111/p/14877367.html
Copyright © 2011-2022 走看看