发表于: 2018-01-26 22:58:13

2 563


今天做了什么:

照着csdn上一篇开发DAO层的经典实现,自己重新改了项目。

这是DAO层的一个方法:

//添加学生
public void addStudent(Student stu);

这是impl的方法

 @Override
public void addStudent(Student stu) {
String sql="insert into student values (null,?,?,?,?,?)";
    try {
        conn= (Connection) DBUtil.getConnection();
        pstmt= (PreparedStatement) conn.prepareStatement(sql);
        pstmt.setString(1, stu.getName());
        pstmt.setInt(2, stu.getAge());
        pstmt.setString(3, stu.getGender());
        pstmt.setString(4, stu.getPhone());
        pstmt.setString(5, stu.getEducation());
        pstmt.executeUpdate();
        System.out.println("添加學生成功!");
    } catch (SQLException e) {
        e.printStackTrace();
    }finally{
        DBUtil.closeAll(rs, pstmt, conn);
    }
}


DBUtil:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/*
* 数据库工具类
*/
public class DBUtil {
//获取数据库连接
   public static Connection getConnection(){
     Connection conn=null;
       try {
           Class.forName("com.mysql.jdbc.Driver");
           conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/students", "root", "1111");
       } catch (ClassNotFoundException e) {
           e.printStackTrace();
       } catch (SQLException e) {
           e.printStackTrace();
       }
       return conn;
   }

//关闭所有资源
   public static void closeAll(ResultSet rs,Statement stmt,Connection conn){
       try {
           if(rs!=null)
               rs.close();
           if(stmt!=null)
               stmt.close();
           if(conn!=null)
               conn.close();
       } catch (SQLException e) {
               e.printStackTrace();
       }
   }
}


是把JDBC连接放在DBUtil里。然后继承。

但是在IDE中StudentDAO类里,显示public是非必要的,所有方法都是unused。

基本能够看懂,但是自己写不出来,还得再看java的基础。


明天打算做什么:

编写DAO层的Junit测试。


遇到的问题:

很多包没有import,用Alt+Enter可以i添加大部分,功能很强大。

原博客中的conn=DBUtil.getConnection();报错,Alt+Enter后自动改为conn=(connection)DBUtil.getConnection();不清楚为什么。

收获:

JDBCTemplate中的DAO层通过try{conn=(connection)DBUtil.getConnection();   ···}


返回列表 返回列表
评论

    分享到