springBoot入门实战

SpringBoot

1.创建Maven工程,导入相关依赖

<!--继承父包-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.5.RELEASE</version>
    </parent>

    <dependencies>
        <!--web启动jar包-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
      <!--配置lombok-->
      <dependency>
          <groupId>org.projectlombok</groupId>
          <artifactId>lombok</artifactId>
          <version>1.18.16</version>
      </dependency>

        
    </dependencies>

2.创建Student实体类


package com.xing;

import lombok.Data;

@Data
public class Student {
    private Long id;
    private String name;
    private int age;
}

3.StudentRepository

3.1 Restful风格

查询 get
修改 put
删除 delete
增加 post

3.2 接口实现类

package com.xing.repository;

import com.xing.entity.Student;

import java.util.Collection;

public interface StudentRepository {

    public Collection<Student> findAll();    //查询所有,不只一个,要用集合承接
    public Student findById(long id);  //查询一个,只需要用Student接就好啦
    public void saveOrUpdate(Student student); //保存或者更新,不只有一个参数,要用对象封装起来,不需要返回值
    public void deleteById(long id); //根据id删除,不需要返回值
}

4.StudentRepositoryImPl

package com.xing.repository.impl;

import com.xing.entity.Student;
import com.xing.repository.StudentRepository;
import org.springframework.stereotype.Repository;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

@Repository
public class StudentRepositoryImpl implements StudentRepository {

    private static Map<Long,Student> studentMap; //定义静态的map集合

    static {
        studentMap=new HashMap<>();
        studentMap.put(1l,new Student(1l,"邢福豪",22));
        studentMap.put(2l,new Student(2l,"张三",23));
        studentMap.put(3l,new Student(3l,"李四",24));
    }

    @Override
    public Collection<Student> findAll() {
        return studentMap.values();
    }

    @Override
    public Student findById(long id) {
        return studentMap.get(id);
    }

    @Override
    public void saveOrUpdate(Student student) {
        studentMap.put(student.getId(),student);
    }

    @Override
    public void deleteById(long id) {
        studentMap.remove(id);
    }
}

5.StudentHander

package com.xing.controller;

import com.xing.entity.Student;
import com.xing.repository.StudentRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.Collection;

@RestController
@RequestMapping("/student")
public class StudentHander {

    @Autowired
    private StudentRepository studentRepository;

    @GetMapping("/findAll")      //Rest风格,查询用get
    public Collection<Student> findAll(){
        return  studentRepository.findAll();
    }

    @GetMapping("/findById/{id}") //Rest风格,查询用get
    public Student findById(@PathVariable("id") long id){
        return studentRepository.findById(id);
    }

    @PostMapping("/save")    //Rest风格,新增用post,响应的是json格式,要用@RequestBody展示
    public void save(@RequestBody Student student){
         studentRepository.saveOrUpdate(student);
    }

    @PutMapping("/update")   //Rest风格,修改用put,响应的是json格式,要用@RequestBody展示
    public void update(@RequestBody Student student){
        studentRepository.saveOrUpdate(student);
    }

    @DeleteMapping("/deleteById/{id}")  //Rest风格,删除用delete
    public void deleteById(@PathVariable("id") long id){
        studentRepository.deleteById(id);
    }

}

6.application.yml

server:
  port: 9090

7.启动类

必须在其他包之上,是父级节点

package com.xing;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class,args);
    }
}

@springBootApplication 表示当前类是Spring Boot的入口,Application类的存放位置,必须是其他相关业务类存放位置的父级位置

SpringBoot 整合JSP

1.pom.xml

<parent>
  <groupId>org.springframework.boot</groupId>
  <version>2.3.3.RELEASE</version>
  <artifactId>spring-boot-starter-parent</artifactId>
</parent>

<dependencies>

  <!--web-->
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
  </dependency>

  <!--整合 JSP-->
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
  </dependency>
  <dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
    <version>9.0.43</version>
  </dependency>

  <!--JSTL 标准标签库-->
  <dependency>
    <groupId>jstl</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
  </dependency>

</dependencies>

2.创建application.yml

server:
  port: 8181
spring:
  mvc:
    view:
      prefix: /
      suffix: .jsp

3.创建Handler

3.1.Controller区别

@RestController //返回的是数据
@Controller //返回的是模型和视图

3.2.Handler实现

package com.xing.controller;

import com.xing.entity.Student;
import com.xing.repository.StudentRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;


@Controller //返回的是模型和视图
@RequestMapping("/hello")
public class HelloHandler {

    @Autowired
    private StudentRepository studentRepository;

    @GetMapping("/index")
    public ModelAndView index(){
        ModelAndView modelAndView=new ModelAndView();
        modelAndView.setViewName("index");
        modelAndView.addObject("list",studentRepository.findAll());
        return modelAndView;
    }

    @GetMapping("/deleteById/{id}") //因为超链接是get传递的,所以现在暂时不能用rest请求
    public String deleteById(@PathVariable("id")long id){
        studentRepository.deleteById(id);
        return "redirect:/hello/index";
    }

    @PostMapping("/save")
    public String save(Student student){
        studentRepository.saveOrUpdate(student);
        return "redirect:/hello/index";
    }

    @PostMapping("/update")
    public String update(Student student){
        studentRepository.saveOrUpdate(student);
        return "redirect:/hello/index";
    }

    @GetMapping("/findById/{id}")
    public ModelAndView findById(@PathVariable("id") long id){
        ModelAndView modelAndView=new ModelAndView();
        modelAndView.addObject("student",studentRepository.findById(id));
        modelAndView.setViewName("update");
        return modelAndView;
    }

}

4.index.jsp

<%--
  Created by IntelliJ IDEA.
  User: xingfuhao
  Date: 2021/4/6
  Time: 13:03
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page isELIgnored="false"%>
<html>
<head>
    <title>学生信息</title>
</head>
<body>
    <h1>学生信息</h1>
    <table>
        <tr>
            <td>学生编号</td>
            <td>学生姓名</td>
            <td>学生年龄</td>
            <td>操作</td>
        </tr>
        <c:forEach items="${list}" var="student">
            <tr>
                <td>${student.id}</td>
                <td>${student.name}</td>
                <td>${student.age}</td>
                <td>
                    <a href="/hello/findById/${student.id}">修改</a>
                    <a href="/hello/deleteById/${student.id}">删除</a>
                </td>

            </tr>
        </c:forEach>
    </table>
<a href="/save.jsp">添加学生</a>
</body>
</html>

添加

<%--
  Created by IntelliJ IDEA.
  User: xingfuhao
  Date: 2021/4/6
  Time: 13:23
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>

    <form method="post" action="/hello/save">
        ID:<input type="text" name="id" /><br/>
        姓名:<input type="text" name="name"/><br/>
        年龄:<input type="text" name="age"/><br/>
        <input type="submit" value="提交">
    </form>

</body>
</html>

修改

<%--
  Created by IntelliJ IDEA.
  User: xingfuhao
  Date: 2021/4/6
  Time: 13:23
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>

    <form method="post" action="/hello/update">
        ID:<input type="text" name="id" value="${student.id}" readonly/><br/>
        姓名:<input type="text" name="name" value="${student.name}" /><br/>
        年龄:<input type="text" name="age" value="${student.age}"/><br/>
        <input type="submit" value="提交">
    </form>

</body>
</html>

SpringBoot 整合HTML

解释:

springBoot可以结合thymeleaf模版来整合HTML,使原生的的HTML作为视图

Thymeleaf模版是面向WEB和独立环境的java模版引擎,能够处理css, html,xml,javascript 等。

<P th:text="${message}"></P>  //用Thymeleaf模版展示数据在页面的p标签内

1.pom.xml

<?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>org.example</groupId>
    <artifactId>springBoot01</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <!--继承父包-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.5.RELEASE</version>
    </parent>

    <dependencies>
        <!--web启动jar包-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!--配置lombok-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.16</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

        <!--Thymeleaf模版-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
    </dependencies>


</project>

2.application.yml

server:
  port: 9090
spring:
  thymeleaf:
    prefix: classpath:/templates/
    suffix: .html
    mode: HTML5
    encoding: UTF-8

3.Handler

package com.xing.controller;

import com.xing.entity.Student;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.ArrayList;
import java.util.List;

@Controller
@RequestMapping("/index")
public class IndexHandler {

    @GetMapping("/index")
    public String index(Model model){
        System.out.println("index....");

        List<Student> list=new ArrayList<>();
        list.add(new Student(1L,"幸福哈",22));
        list.add(new Student(2L,"张三",23));
        list.add(new Student(3L,"李四",24));

        model.addAttribute("list",list);

        return "/index";
    }
}

4.HTML

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>你好,初心少年</h1>

            <table>
                <tr>
                    <td>学生ID</td>
                    <td>学生姓名</td>
                    <td>学生年龄</td>
                </tr>
                <tr th:each="student:${list}">
                    <td th:text="${student.id}"></td>
                    <td th:text="${student.name}"></td>
                    <td th:text="${student.age}"></td>
                </tr>
            </table>
</body>
</html>

5 结果展示

如果希望客户端可以直接访问HTML资源,将这些资源放在static路径下即可,否则必须通过Handler的后台映射才可以访问

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VcW4sXya-1618276093167)(/Users/xingfuhao/Library/Application Support/typora-user-images/image-20210406204322453.png)]

Thymeleaf的常用用法

1.赋值,拼接

@GetMapping("/index2")
public String index2(Map<String,String> map){
    map.put("name","张三");
    return "index2";
}
<p th:text="${name}"></p>
<p th:text="学生姓名+${name}+你好"></p>
<p th:text="|学生姓名,${name}|"></p>

2.条件判断: if/unless

th:if 表示条件成立时显示内容,th:unless 表示条件不成立时显示内容

@GetMapping("/if")
public String index3(Map<String,Boolean> map){
    map.put("flag",true);
    return "index";
}
<p th:if="${flag==true}" th:text="if判断成立"></p>
<p th:unless="${flag==true}" th:text="unless判断成立"></p>
image-20210406214556780

3.循环

@GetMapping("/index")
public String index(Model model){
    System.out.println("index....");
    
    List<Student> list=new ArrayList<>();
    list.add(new Student(1L,"幸福哈",22));
    list.add(new Student(2L,"张三",23));
    list.add(new Student(3L,"李四",24));

    model.addAttribute("list",list);
    return "/index";
}
 <table>
                <tr>
                    <td>index</td>
                    <td>count</td>
                    <td>学生ID</td>
                    <td>学生姓名</td>
                    <td>学生年龄</td>
                </tr>
                <tr th:each="student,stat:${list}" th:style="'background-color:'+@{${stat.odd}?'red'}">
                    <td th:text="${stat.index}"></td>
                    <td th:text="${stat.count}"></td>
                    <td th:text="${student.id}"></td>
                    <td th:text="${student.name}"></td>
                    <td th:text="${student.age}"></td>
                </tr>
            </table>

循环用的比较多

stat 是状态变量,属性:

1.index集合中元素的 index (从0开始)

2.count集合中元素的 count (从1开始)

3.size 集合的大小

4.current当前迭代变量

5.even/odd当前迭代是否为奇数/偶数(从0开始)

6.first当前迭代元素是否为第一个

7.last当前迭代元素是否为最后一个

8.URL

Thymeleaf 对于url的处理是通过@{…}进行处理的,结合 th:href th:src

{na}(na=${name})作用域后台取值

<a th:href="@{http://www.baidu.com}">跳转1</a>
<a th:href="@{http://localhost:8989/index/url/{na}(na=${name})}">跳转2</a>

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P6vC18eu-1618276093173)(/Users/xingfuhao/Library/Application Support/typora-user-images/image-20210411230726075.png)]

4.内嵌对象

可以直接通过#访问

1.dates: java.util.Date的功能方法

2.calendars: java.util.Calendar的功能方法

3.numbers: 格式化数字

4.strings: java.lang.String的功能和方法

5.objects: Obgect的功能和方法

6.bools: 对布尔求值的方法

7.arrays: 操作数组的功能和方法

8.lists: 操作集合的功能和方法

9.sets: 操作集合的功能和方法

10.maps: 操作集合的功能和方法

<!--格式化时间-->
<p th:text="${#dates.format(date,'yyyy-MM-dd HH:mm:ss')}"></p>
<!--创建时间,精确到天,秒-->
<p th:text="${#dates.createToday()}"></p>
<p th:text="${#dates.createNow()}"></p>
<!--判断是否为空-->
<p th:text="${#strings.isEmpty(name)}"></p>
<!--判断list是否为空-->
<p th:text="${#lists.isEmpty(users)}"></p>
<!--输出字符串的长度-->
<p th:text="${#strings.length(name)}"></p>
<p th:text="${#strings.concat(name,name,name)}"></p>//concat拼接
<p th:text="${#strings.randomAlphanumeric(count)}"></p>

5.SpringBoot 数据校验

@GetMapping("/util")
public String util(Model model ){
    model.addAttribute("name","张三");
    model.addAttribute("users",new ArrayList<>());
    model.addAttribute("count",22);
    model.addAttribute("date",new Date());

    return "test1";
}
  /*BindingResult是用于接收前一个参数校验(validate或valid)错误信息,
    前端将不再显示错误信息statusCode == 200, 后端也不会抛出异常*/
    @GetMapping("/validator")
     public void validatorUser(@Valid User user, BindingResult bindingResult){
        System.out.println(user);
        if (bindingResult.hasErrors()){
            List<ObjectError> list = bindingResult.getAllErrors();
            for (ObjectError objectError : list) {
                System.out.println(objectError.getCode()+"-"+objectError.getDefaultMessage());
            }
        }
     }
@Data
public class User {

    @NotNull(message = "id不能为空") //未输入值
    private int id;
    @NotEmpty(message = "姓名不能为空")//输入的值为空。姓名不能为空
    @Length(min = 2,message = "姓名长度不能小于2位")
    private String name;
    @Min(value = 16,message = "年龄不能小于16岁")
    private int age;
}

SpringBoot整合JDBC

1.pom.xml

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.21</version>
</dependency>

2.application.yml

server:
  port: 8989
spring:
  thymeleaf:
    prefix: classpath:/templates/
    suffix: .html
    mode: HTML5
    encoding: UTF-8
  datasource:
    url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8
    username: root
    password: root
    driver-class-name: com.mysql.cj.jdbc.Driver

3.实体类User

@Data
public class User {

    @NotNull(message = "id不能为空") //未输入值
    private long id;
    @NotEmpty(message = "姓名不能为空")//输入的值为空。姓名不能为空
    @Length(min = 2,message = "姓名长度不能小于2位")
    private String name;
    @Min(value = 60,message = "成绩必须大于60分")
    private double score;
}

4.UserRepository

package com.xing.repository;

import com.xing.entity.User;

import java.util.List;

public interface UserRepository {

    public List<User> findAll();    //查出好多对象,要用list集合装载,查询出来
    public User findById(long id);  //根据id查询出来一个对象,用User接收就好啦 ,查询出来
    public void  save(User user); //保存的整个对象到数据库,不用看,就不需要返回值
    public void  update(User user); //修改的整个对象到数据库,不用看,就不需要返回值
    public void  deleteById(Long id); //根据id删除数据库对象,也不用看,不需要返回值


}

5.UserRepositoryImpl

@Repository
public class UserRepositoryImpl implements UserRepository {
  
    @Autowired
    private JdbcTemplate jdbcTemplate; //调用jdbc的模版,写sql语句,暂时不要mybatis

    @Override
    public List<User> findAll() {
        return jdbcTemplate.query("select * from user",new BeanPropertyRowMapper<>(User.class));
    }

    @Override
    public User findById(long id) {
        return  jdbcTemplate.queryForObject("select * from user where id= ? ",new Object[]{id},new BeanPropertyRowMapper<>(User.class));

    }

    @Override
    public void save(User user) {
        jdbcTemplate.update("insert into user(name,score) values (?,?)",user.getName(),user.getScore());

    }

    @Override
    public void update(User user) {
        jdbcTemplate.update("update user set name= ?,score=? where id=?",user.getName(),user.getScore(),user.getId());
    }

    @Override
    public void deleteById(Long id) {
        jdbcTemplate.update("delete from user where id=? ",id);
    }
}

6.Hander

package com.xing.controller;

import com.xing.entity.User;
import com.xing.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/user")
public class UserHandler {

    @Autowired
    private UserRepository userRepository;

    //严格遵守rest风格
    // 查 get
    // 增加 post
    // 修改 put
    // 删除 delete

    @GetMapping("/findAll")
    public List<User> findAll(){
        return  userRepository.findAll();
    }
   //@PathVariable是用来,对指定请求的URL路径里面的变量

    @GetMapping("/findById/{id}")
    public User findById(@PathVariable("id") long id){
        return userRepository.findById(id);
    }

    //@RequestBody把前端传过来的json对象,转成Java
    @PostMapping("/save")
    public void save(@RequestBody User user){
        userRepository.save(user);
    }

    @PutMapping("/update")
    public void update(@RequestBody User user){
        userRepository.update(user);
    }

    @DeleteMapping("/deleteById/{id}")
    public void deleteById(@PathVariable("id") long id){
        userRepository.deleteById(id);
    }

}

springBoot整合mybatis

1.创建maven工程,pom.xml依赖

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-parent</artifactId>
    <version>2.3.1.RELEASE</version>
</parent>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>2.1.3</version>
    </dependency>

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.22</version>
    </dependency>

    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
    </dependency>

</dependencies>

2.创建数据表

use mbtest;
create table student
(		
		id int primary key auto_increment,
		name VARCHAR(11),
		score double,
		birthday date
		
);

3.创建实体类

package com.xing.entity;

import lombok.Data;

import java.util.Date;

@Data
public class Student {
    private long id;
    private String name;
    private Double score;
    private Date birthday;
}

失败是常事,不如意也是常事

不会让你一直高兴的,人要找虐啊

出现这种文题,不搞了

只能保存一袭

谁谁谁

4.创建StudentRepository接口

package com.xing.repository;
import com.xing.entity.Student;
import java.util.List;
public interface StudentRepository {

    public List<Student> findAll();
    public Student findById(Long id);
    public void save(Student student);
    public void update(Student student);
    public void deleteById(Long id);

}

5.在resources/mapping路径下创建StudentRepository接口对应的mapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace的值跟mapper接口的名称保持一致 -->
<mapper namespace="com.xing.repository.StudentRepository">
 
    <select id="findAll" resultType="Student">
        select * from student
    </select>

    <select id="findById" resultType="Student" parameterType="java.lang.Long">
        select * from student where id=#{id}
    </select>

    <insert id="save" parameterType="Student">
        insert into student(name,score,birthday) values (#{name},#{score},#{birthday})
    </insert>

    <update id="update" parameterType="Student">
        update student set name=#{name},score=#{score},birthday=#{birthday} where id=#{id}
    </update>

    <delete id="deleteById" parameterType="java.lang.Long">
        delete from student where id=#{id}
    </delete>

</mapper>

6.创建StudentHandler,注入StudentRepository

package com.xing.controller;

import com.xing.entity.Student;
import com.xing.repository.StudentRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
public class StudentHander {

    @Autowired
    private StudentRepository studentRepository;

    @GetMapping("/findAll")
    public List<Student> findAll(){
        return studentRepository.findAll();
    }

    @GetMapping("/findById/{id}")
    public Student findById(@PathVariable("id") Long id){
        return studentRepository.findById(id);
    }

    @PostMapping("/save") //把请求过来的json对象,转化为java对象
    public void save(@RequestBody Student student){
        studentRepository.save(student);
    }

    @PutMapping("/update") //把请求过来的json对象,转化为java对象
    public void update(@RequestBody Student student){
        studentRepository.update(student);
    }

    @DeleteMapping("/delete/{id}")
    public void delete(@PathVariable("id") Long id){
        studentRepository.deleteById(id);
    }


}

7.application.yml

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mbtest?useUnicode=true&characterEncoding=UTF-8
    username: root
    password: root
    driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:
  mapper-locations: classpath:/mapping/*.xml
  type-aliases-package: com.xing.entity

8.创建Application

package com.xing;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("com.xing.repository")
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class,args);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值