大家好,今天记录下学习springboot的第三天。@网创有方
 这节详细记录了如何使用springboot整合mybatis方法,并成功实现将请求信息插入本地的mysql数据库。
由于只是为了方便本地验证,实际项目是需要部署到服务器上去的,所以就采用了xampp这类工具快速搭建mysql及phpmyadmin管理工具了。
本篇要实现的效果:
在springboot项目中,使用post方法中的RequestBody方式向本地服务器进行请求,插入学生信息到本地数据库,传入参数为json类型。

 关于传参方式类型,可以参见我上篇学习记录。
 也可以使用其他的传入方法,比如post和get表单方式,效果是一样的。下图是get表单方式
 
第一步:配置mybatis启动器和mysql连接器依赖(pom.xml)中
版本可以去maven repository网站去查看
  <!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>3.0.3</version>
        </dependency>
        
        <!-- https://mvnrepository.com/artifact/com.mysql/mysql-connector-j -->
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <version>9.0.0</version>
        </dependency>
这里注意:最新版本的连接池已从mysql-connector-java迁移到mysql-connector-j
 配置好了以后,点击maven的刷新图标或者clean再install下也可以。
第二步:搭建基于本地的mysql数据库环境(实际项目应该搭建在服务器环境下)
下载xampp,在安装时候记得选择开启apache和mysql。如果其中的apache和mysql,以及phpmyadmin出现无法开启的情况,记得修改下各自的端口。如果修改端口也无法启动,查看下面板的提示消息,百度查询各自的解决办法。

第三步:创建数据库及表,以及字段
数据库的话,直接打开phpmyadmin创建就可以,表及字段的话使用sql语句即可。
 本文使用的数据库名称为test123,表名为student。字段信息包含age,name,时间戳三项。使用的sql语句如下所示:
CREATE TABLE student (  
    id INT AUTO_INCREMENT PRIMARY KEY, -- 主键字段  
    age INT NOT NULL,                  -- 年龄字段,不允许为空  
    name VARCHAR(50) NOT NULL,         -- 姓名字段,假设最大长度为50,不允许为空  
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP -- DATETIME类型的时间戳字段,默认为当前时间  
);
第四步:在配置文件中添加数据源和连接池(在application.yml)
server:
  port: 80
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/test123?useSSL=false&characterEncoding=UTF-8&serverTimezone=UTC
    username: root
    password:
    driver-class-name: com.mysql.cj.jdbc.Driver
    type: com.zaxxer.hikari.HikariDataSource
    # 连接池
    hikari:
      minimum-idle: 10
      maximum-pool-size: 20
      idle-timeout: 300000
      max-lifetime: 1800000
      connection-timeout: 30000
      pool-name: SpringHikariCP
mybatis:
  mapper-locations: classpath:mapper/**/*.xml
  configuration:
    #配置mysql打印日志
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    #配置xml文件扫描路径
注意:上面的url需要填写正确,数据库名和密码都需要正确。由于我的本地mysql初始化是默认账号是root,密码为空,所以上述代码中也保持为空。
项目结构:

第五步:编写mapper接口(interface)文件
在数据库环境和数据库表及字段创建好的情况下,就可以正式编写mybatis代码了。
 主要是2个,一个是mapper下的接口。另外一个是对应的xml,主要是用来保存sql语句。
 
package cn.wcyf.wcai.mapper;
import cn.wcyf.wcai.pojo.Student;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface StudentMapper {
    void save(Student student);
}
注意:mapper接口类需要加上@Mapper注解
附录:(Student.java 如下)
@Component("student")
public class Student {
    private String  name;//姓名
    private int age;//年龄
    private Date create_time;//时间戳
    public Date getCreate_time() {
        return create_time;
    }
    public void setCreate_time(Date create_time) {
        this.create_time = create_time;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}
第六步:编写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">
<mapper namespace="cn.wcyf.wcai.mapper.StudentMapper">
    <insert id="save">
            INSERT INTO student (age, name,create_time)
        VALUES (#{age}, #{name},#{create_time})
    </insert>
</mapper>
注意:这里的namespace命名空间需要保持和接口所在的类名一致,否则会报错。这里的id和接口中的方法名也要保持一致
第七步:在controller中调用mapper接口方法进行数据库增删改查,这里是增
@RequestMapping("/student")
@RestController
public class StudentController {
    @Resource
    private StudentMapper studentMapper;
    @PostMapping("/insert1")
    public ResponseObject<Student> save( Student student){
        return ResponseObject.createSuccessfulResp("请求成功",student);
    }
    @PostMapping(value = "/save/json")
    public Student save1(@RequestBody Student student){
        return student;
    }
    @GetMapping("/get")
    public Student get(Student student){
        return student;
    }
    @GetMapping("/get1/{age}")
    public Student get1(@PathVariable Integer age){
        Student student = new Student();
        student.setAge(age);
        return student;
    }
    @GetMapping("/getParam")
    public Student getParam(@RequestParam Integer age,@RequestParam String name){
        Student student = new Student();
        student.setName(name);
        student.setAge(age);
        student.setCreate_time(new Date());
        studentMapper.save(student);
        return student;
    }
}
第八步:使用postman等调试工具进行调试
构建好要发送的json数据,然后点击发送。
 
 实际执行后的插入结果如下:
 



















![[Linux] 权限](https://i-blog.csdnimg.cn/direct/edbba5bbe0bd4fc59885614068aa03af.png)