第十三节:学习Springboot整合mybatis——完整篇(自学Spring boot 3.x的第三天)

大家好,今天记录下学习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数据,然后点击发送。
在这里插入图片描述
实际执行后的插入结果如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mero技术博客

创作不易,打赏小弟可否

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值