06.Spring Boot 實戰~Spring Boot整合JDBC增刪查改操作~
本文用到的數據庫表
【聲明:本文數據庫內的信息是隨機添加用來學習,如有雷同,純屬巧合】
關於整合和配置等操作在上一篇文章就已經敘述了,這裏就直接上代碼了~
添加操作
Dao層
@Repository
public class StudentDaoImpl implements StudentDao {
@Autowired
private JdbcTemplate jdbcTemplate;
@Override
public void insertStudent(Student student) {
String sql = "insert into student values(?,?,?,?,?)";
this.jdbcTemplate.update(sql,student.getSon(),student.getRealname()
,student.getPassword(),student.getClassname(),student.getScore());
}
}
Service層
@Service
public class StudentServiceImpl implements StudentService {
@Autowired
private StudentDao studentDao;
@Override
@Transactional
public void addStudent(Student student) {
this.studentDao.insertStudent(student);
}
}
Controller
@Controller
@RequestMapping("/student")
public class MyController {
@Autowired
private StudentService studentService;
@RequestMapping("/MyControllerInsert")
@Transactional
public String Insert(Student student){
System.out.println(student);
try{
this.studentService.addStudent(student);
}catch(Exception e){
e.printStackTrace();
return"redirect:/error";
}
return"redirect:/succeed";
}
}
視圖
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<link rel="shortcut icon" href="../resources/favicon.ico" th:href="@{/static/favicon.ico}"/>
<head>
<meta charset="UTF-8">
<title>添加學生</title>
</head>
<body>
<form action="/student/MyControllerInsert" method="post">
學號: <input type="text" name="son"/><br/>
姓名: <input type="text" name="realname"/><br/>
密碼: <input type="password" name="password"/><br/>
院系: <input type="text" name="classname"/><br/>
成績: <input type="text" name="score"/><br/>
<input type="submit" value="提交"/>
</form>
</body>
</html>
查詢全部學生信息
Dao
@Override
public List<Student> FindAll() {
String sql = "select * from student";
return this.jdbcTemplate.query(sql, new RowMapper<Student>() {
@Override
public Student mapRow(ResultSet resultSet, int i) throws SQLException {
Student student = new Student();
student.setSon(resultSet.getString("son"));
student.setRealname(resultSet.getString("realname"));
student.setPassword(resultSet.getString("password"));
student.setClassname(resultSet.getString("classname"));
student.setScore(resultSet.getDouble("score"));
return student;
}
});
}
Service
@Override
public List<Student> FindAll() {
return studentDao.FindAll();
}
Controller
@RequestMapping("/MyControllerFindAll")
public String FindAll(Model model){
try{
model.addAttribute("list",this.studentService.FindAll());
}catch(Exception e){
e.printStackTrace();
return"redirect:/error";
}
return "mainStu";
}
視圖
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<link rel="shortcut icon" href="../resources/favicon.ico" th:href="@{/static/favicon.ico}"/>
<head>
<meta charset="UTF-8">
<title>學生信息首頁</title>
</head>
<body>
<table border="1px" align="center">
<tr>
<td>學號</td>
<td>姓名</td>
<td>密碼</td>
<td>院系</td>
<td>成績</td>
<td>功能</td>
</tr>
<tr th:each="student : ${list}">
<td th:text="${student.getSon()}"></td>
<td th:text="${student.getRealname()}"></td>
<td th:text="${student.getPassword()}"></td>
<td th:text="${student.getClassname()}"></td>
<td th:text="${student.getScore()}"></td>
<td>
<a th:href="@{/student/MyControllerFindBySon (son=${student.getSon()})}">修改</a>
<a th:href="@{/student/MyControllerDel (son=${student.getSon()})}">刪除</a>
</td>
</tr>
</table>
</body>
</html>
根據學號查詢學生信息(預更新)
Dao
@Override
public Student FindStudentBtSon(String son) {
String sql = "select * from student where son = ?";
Student student = new Student();
Object [] objects = new Object[]{son};
this.jdbcTemplate.query(sql,objects, new RowCallbackHandler() {
@Override
public void processRow(ResultSet resultSet) throws SQLException {
student.setSon(resultSet.getString("son"));
student.setRealname(resultSet.getString("realname"));
student.setPassword(resultSet.getString("password"));
student.setClassname(resultSet.getString("classname"));
student.setScore(resultSet.getDouble("score"));
}
});
return student;
}
Service
@Override
public Student FindStudentBtSon(String son) {
return studentDao.FindStudentBtSon(son);
}
Controller
@RequestMapping("/MyControllerFindBySon")
public String FindBySon(String son,Model model){
try{
model.addAttribute("stu",studentService.FindStudentBtSon(son));
}catch(Exception e){
e.printStackTrace();
return"redirect:/error";
}
return "UpdateStudent";
}
視圖(這是修改頁面,查詢的目的就是爲了把數據傳到修改頁面)
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<link rel="shortcut icon" href="../resources/favicon.ico" th:href="@{/static/favicon.ico}"/>
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/student/MyControllerUpdate" method="post">
學號: <input type="text" name="son" th:value="${stu.getSon()}"/><br/>
姓名: <input type="text" name="realname" th:value="${stu.getRealname()}"/><br/>
密碼: <input type="password" name="password" th:value="${stu.getPassword()}"/><br/>
院系: <input type="text" name="classname" th:value="${stu.getClassname()}"/><br/>
成績: <input type="text" name="score" th:value="${stu.getScore()}"/><br/>
<input type="submit" value="提交"/>
</form>
</body>
</html>
修改學生信息
Dao
@Override
public void Update(Student student) {
String sql = "update student set son = ?,password = ?, realname = ?, " +
"classname = ?, score = ? where son = ?";
this.jdbcTemplate.update(sql,student.getSon(),student.getPassword(),
student.getRealname(),student.getClassname(),student.getScore()
,student.getSon());
}
Service
@Override
@Transactional
public void Update(Student student) {
this.studentDao.Update(student);
}
}
Controller
@RequestMapping("/MyControllerUpdate")
@Transactional
public String Update(Student student){
try{
studentService.Update(student);
}catch(Exception e){
e.printStackTrace();
return"redirect:/error";
}
return"redirect:/succeed";
}
刪除學生信息
Dao
@Override
public void Del(String son) {
String sql = "delete from student where son = ?";
this.jdbcTemplate.update(sql,son);
}
Service
@Override
public void Del(String son) {
this.studentDao.Del(son);
}
Controller
@RequestMapping("/MyControllerDel")
@Transactional
public String Del(String son){
try{
studentService.Del(son);
}catch(Exception e){
e.printStackTrace();
return"redirect:/error";
}
return"redirect:/succeed";
}
最後,再將整個項目的Dao層總結一遍
package com.alvin.dao.impl;
import com.alvin.dao.StudentDao;
import com.alvin.pojo.Student;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowCallbackHandler;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Repository;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
@Repository
public class StudentDaoImpl implements StudentDao {
@Autowired
private JdbcTemplate jdbcTemplate;
@Override
public void insertStudent(Student student) {
String sql = "insert into student values(?,?,?,?,?)";
this.jdbcTemplate.update(sql,student.getSon(),student.getRealname()
,student.getPassword(),student.getClassname(),student.getScore());
}
@Override
public List<Student> FindAll() {
String sql = "select * from student";
return this.jdbcTemplate.query(sql, new RowMapper<Student>() {
@Override
public Student mapRow(ResultSet resultSet, int i) throws SQLException {
Student student = new Student();
student.setSon(resultSet.getString("son"));
student.setRealname(resultSet.getString("realname"));
student.setPassword(resultSet.getString("password"));
student.setClassname(resultSet.getString("classname"));
student.setScore(resultSet.getDouble("score"));
return student;
}
});
}
@Override
public Student FindStudentBtSon(String son) {
String sql = "select * from student where son = ?";
Student student = new Student();
Object [] objects = new Object[]{son};
this.jdbcTemplate.query(sql,objects, new RowCallbackHandler() {
@Override
public void processRow(ResultSet resultSet) throws SQLException {
student.setSon(resultSet.getString("son"));
student.setRealname(resultSet.getString("realname"));
student.setPassword(resultSet.getString("password"));
student.setClassname(resultSet.getString("classname"));
student.setScore(resultSet.getDouble("score"));
}
});
return student;
}
@Override
public void Update(Student student) {
String sql = "update student set son = ?,password = ?, realname = ?, " +
"classname = ?, score = ? where son = ?";
this.jdbcTemplate.update(sql,student.getSon(),student.getPassword(),
student.getRealname(),student.getClassname(),student.getScore()
,student.getSon());
}
@Override
public void Del(String son) {
String sql = "delete from student where son = ?";
this.jdbcTemplate.update(sql,son);
}
}