今天在上课的时候,带着学生们写底层的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层直接调用对应的是方法即可。
@Overridepublic 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
点分享
点点赞
点在看