項目搭建的包命名和類命名:

首先導入數據庫的驅動架包,並添加依賴

1.Dao層是專門負責和數據庫交互,數據處理的代碼層
2.Dao是接口,DaoImpl是Dao接口的實現類
3.Java代碼連接數據庫的步驟:“賈璉欲執事”口訣
(1)賈:加載數據庫注冊驅動,將數據庫驅動注冊到DriverManager中去。
Class.forName("com.mysql.jdbc.Driver");
(2)璉:創建連接數據庫的對象,通過DriverManager獲取
Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbcdemo", "root", "123456");
(3)欲:創建預編譯或非預編譯 SQL語句對象
String sql="update t_student set name = ?,age = ? where id = ?";
PrepardStatment ps =conn.preparedStatment(sql);
ps.setString(1,"小明");
ps.setInt(2,20);
ps.setInt(3,2);
(4)執:執行SQL語句
int row =ps.executeUpdate();
(5)事:釋放資源(先創后放)
conn.close();
ps.close();
具體代碼:
@Override
public int insert(Student stu) {
String sql = "insert into t_student(name,age)values(?,?)";
Connection conn = null;
PreparedStatement ps = null;
try {
// 1.加載注冊驅動
Class.forName("com.mysql.jdbc.Driver");
// 2.獲取數據庫連接對象
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbcdemo", "root", "root");
// 3.創建預編譯語句對象
ps = conn.prepareStatement(sql);
// 3.1設置預編譯語句對象占位符對應的參數值
ps.setString(1, stu.getName());
ps.setInt(2, stu.getAge());
// 4.執行SQL語句 (注意:方法不能帶sql參數)
int row = ps.executeUpdate();
return row;
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (ps != null) {
ps.close();
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
return 0;
}
@Override
public int delete(Integer id) {
String sql = "delete from t_student where id = ?";
Connection conn = null;
PreparedStatement ps = null;
try {
// 1.加載注冊驅動
Class.forName("com.mysql.jdbc.Driver");
// 2.獲取數據庫連接對象
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbcdemo", "root", "root");
// 3.創建預編譯語句對象
ps = conn.prepareStatement(sql);
// 3.1設置預編譯語句對象占位符對應的參數值
ps.setInt(1, id);
// 4.執行SQL語句 (注意:方法不能帶sql參數)
int row = ps.executeUpdate();
return row;
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (ps != null) {
ps.close();
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
return 0;
}
@Override
public int update(Student stu) {
String sql = "update t_student set name = ?,age = ? where id = ?";
Connection conn = null;
PreparedStatement ps = null;
try {
// 1.加載注冊驅動
Class.forName("com.mysql.jdbc.Driver");
// 2.獲取數據庫連接對象
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbcdemo", "root", "root");
// 3.創建預編譯語句對象
ps = conn.prepareStatement(sql);
// 3.1設置預編譯語句對象占位符對應的參數值
ps.setString(1, stu.getName());
ps.setInt(2, stu.getAge());
ps.setInt(3, stu.getId());
// 4.執行SQL語句 (注意:方法不能帶sql參數)
int row = ps.executeUpdate();
return row;
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (ps != null) {
ps.close();
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
return 0;
}
@Override
public Student selectByPrimaryKey(Integer id) {
String sql = "select * from t_student where id = ?";
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
// 1.加載注冊驅動
Class.forName("com.mysql.jdbc.Driver");
// 2.獲取數據庫連接對象
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbcdemo", "root", "root");
// 3.創建預編譯語句對象
ps = conn.prepareStatement(sql);
ps.setInt(1, id);
// 4.執行sql語句
rs = ps.executeQuery();
while (rs.next()) {
String name = rs.getString("name");
int age = rs.getInt("age");
// 封裝Student對象
Student stu = new Student(id, name, age);
//返回Student對象
return stu;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (rs != null) {
rs.close();
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (ps != null) {
ps.close();
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
return null;
}
@Override
public List<Student> selectList() {
List<Student> students = new ArrayList<>();
String sql = "select * from t_student";
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
// 1.加載注冊驅動
Class.forName("com.mysql.jdbc.Driver");
// 2.獲取數據庫連接對象
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbcdemo", "root", "root");
// 3.創建預編譯語句對象
ps = conn.prepareStatement(sql);
// 4.執行sql語句
rs = ps.executeQuery();
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
int age = rs.getInt("age");
// 封裝Student對象
Student stu = new Student(id, name, age);
// 學生對象添加到集合中
students.add(stu);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (rs != null) {
rs.close();
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (ps != null) {
ps.close();
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
return students;
}
