发表于: 2018-01-26 22:58:13
2 562
今天做了什么:
照着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(); ···}
评论