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

点分享

点点赞

点在看

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

穆雄雄

哎,貌似还没开张来着呢~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值