刚刚,改造了下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

点分享

点点赞

点在看

posted @ 2020-11-11 06:00  穆雄雄  阅读(30)  评论(0编辑  收藏  举报