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);
    }
}

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