07.Spring Boot 实战~Spring Boot整合Mybatis

07.Spring Boot 实战~Spring Boot整合Mybatis

本文是上一篇文章的后续,详情点击该链接

本文用到的数据库表

在这里插入图片描述

【声明:本文数据库内的信息是随机添加用来学习,如有雷同,纯属巧合】

启动依赖器

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.1.1</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.20</version>
</dependency>

application.properties配置

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/mybatis?useSSL=false&useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=root
#数据源
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
#下面这个就可以扫描到配置文件
mybatis.mapper-locations: classpath:mybatis/*.xml
mybatis.type-aliases-package: com.alvin.domain

搭好项目框架

关于Mybatis技术,可以点击这篇文章
在这里插入图片描述

导入依赖

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.alvin</groupId>
  <artifactId>SpringBootAndMybatis</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>

  <name>SpringBootAndMybatis Maven Webapp</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>

  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.2.0.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
  </parent>


  <dependencies>
    <!--  Spring Boot启动  -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
      <version>2.3.0.RELEASE</version>
    </dependency>


    <!--   Spring boot整合Mybatis  -->
    <dependency>
      <groupId>org.mybatis.spring.boot</groupId>
      <artifactId>mybatis-spring-boot-starter</artifactId>
      <version>2.1.1</version>
    </dependency>

   <!--Thymeleaf启动器坐标-->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-thymeleaf</artifactId>
      <version>2.3.0.RELEASE</version>
    </dependency>

    <!--数据库驱动坐标-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.20</version>
    </dependency>

    <!-- druid数据库连接池 -->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.0.9</version>
    </dependency>


  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>
</project>

当项目有多个Maven时,需要继承无法使用多个parent,可以有以下两种解决方案

<dependencyManagement>
		<dependencies>
		<dependency>
			<!-- Import dependency management from Spring Boot -->
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-dependencies</artifactId>
			<version>2.0.4.RELEASE</version>
			<type>pom</type>
			<scope>import</scope>
		</dependency>
	</dependencies>
</dependencyManagement>
 <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>1.5.1.RELEASE</version>
                <configuration>
                    <executable>true</executable>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>

    </build>

PageController

@Controller
public class PageController {
    //页面跳转方法
    @RequestMapping("/{page}")
    public String showPage(@PathVariable String page){
        return page;
    }
}

实体类

public class Student implements Serializable {
    private String son;
    private String realname;
    private String password;
    private String classname;
    private Double score;
}//get set就不在文章里面写了

启动类

@SpringBootApplication
@MapperScan("com.alvin.mapper")   //接口扫描
public class SpringBootAndMybatis {
    public static void main(String[] args) {
        SpringApplication.run(SpringBootAndMybatis.class,args);
    }
}

需求:完成查询全部学生信息操作

Mapper

public interface StudentMapper {
    //查询全部信息
    @Select("select * from student")
    List<Student>FindAll();
}

Service

@Service
public class StudentServiceImpl implements StudentService {
    @Autowired
    private StudentMapper studentMapper;
    @Override
    public List<Student> FindAll() {
        return studentMapper.FindAll();
    }
}

Controller

@Controller
@RequestMapping("/alvin")
public class MyController {

    @Autowired
    private StudentService studentService;

    @RequestMapping("/FindAll")
    public String FindAll(Model model){
        model.addAttribute("list",studentService.FindAll());
        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="@{/alvin/MyControllerFindBySon (son=${student.getSon()})}">修改</a>
                    <a th:href="@{/alvin/MyControllerDel (son=${student.getSon()})}">删除</a>
                </td>
            </tr>
        </table>
    </body>
</html>

在这里插入图片描述

需求:新增学生信息

Mapper

    @Insert("insert into student value(#{son},#{realname},#{password},#{classname},#{score})")
    int Insert(Student student);

Service

    @Override
    public int Insert(Student student) {
        return studentMapper.Insert(student);
    }

Controller

    @RequestMapping("/InsertStu")
    public String Insert(Student student){
        int n = studentService.Insert(student);
        if(n > 0){
            //说明成功
            return "succeed";
        }
        //失败跳回去
        return "InsertStu";
    }

视图

<!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="/alvin/InsertStu" 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>

在这里插入图片描述在这里插入图片描述在这里插入图片描述

需求:按学号查询信息,发送到修改页面

Mapper

    @Select("select * from student where son = #{param1}")
    Student FindBySon(String son);

Service

    @Override
    public Student FindBySon(String son) {
        return studentMapper.FindBySon(son);
    }

Controller

    @RequestMapping("/MyControllerFindBySon")
    public String Update(String son,Model model){
        Student student = studentService.FindBySon(son);
        model.addAttribute("stu",student);
        return "UpdateStu";
    }

视图

<!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="/alvin/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>

在这里插入图片描述
在这里插入图片描述

修改操作

Mapper

    @Update("update student set password = #{password},score = #{score} where son = #{son}")
    int UpdateStu(Student student);

Service

    @Override
    public int UpdateStu(Student student) {
        return studentMapper.UpdateStu(student);
    }

Controller

    @RequestMapping("/MyControllerUpdate")
    public String MyControllerUpdate(Student student){
        int n = studentService.UpdateStu(student);
        if(n > 0) {
            return "succeed";
        }
        return "UpdateStu";
    }
}

在这里插入图片描述在这里插入图片描述在这里插入图片描述

需求:删除学生信息

Mapper

    @Delete("delete from student where son = #{son}")
    void Del(String son);

Service

    @Override
    public void Del(String son) {
        studentMapper.Del(son);
    }

Controller

    @RequestMapping("/MyControllerDel")
    public String MyControllerDel(String son){
        studentService.Del(son);
        return "succeed";
    }

在这里插入图片描述在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_41424688/article/details/106955515