06.Spring Boot 實戰~Spring Boot整合JDBC增刪查改操作~

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 {
                //和普通的JDBC操作非常相似
                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>
            <!--/*@thymesVar id="list" type=""*/-->
            <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 student = new Student();
        Object [] objects = new Object[]{son};
        this.jdbcTemplate.query(sql,objects, new RowCallbackHandler() {
            @Override
            public void processRow(ResultSet resultSet) throws SQLException {
                //和普通的JDBC操作非常相似
                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 {
                //和普通的JDBC操作非常相似
                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 student = new Student();
        Object [] objects = new Object[]{son};
        this.jdbcTemplate.query(sql,objects, new RowCallbackHandler() {
            @Override
            public void processRow(ResultSet resultSet) throws SQLException {
                //和普通的JDBC操作非常相似
                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);
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章