Springboot整合MyBatis

目录

步骤一:在pom.xml文件中引入MyBatis相关依赖

步骤二:编写application.yml文件

步骤三:编写Mapper类

步骤四:编写Mapper映射文件

(1)首先新建一个映射文件SensorDataMapper

(2)编写映射

步骤五:编写相应的Service类和ServiceImpl类


步骤一:在pom.xml文件中引入MyBatis相关依赖

        <!-- MyBatis -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>3.0.0</version>
        </dependency>
        <!-- junit测试依赖 -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
        <!-- lombok依赖 为了简化实体类的编写代码量 -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <!--mysql数据库驱动依赖-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.29</version>
        </dependency>
        <!--JDBC依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>

步骤二:编写application.yml文件

这里将application.properties改成了application.yml,两者的区别就是编写的内容格式不同,视个人情况而定。

application.yml包含连接数据库和MyBatis的核心配置信息(在springboot框架中不需要使用MyBatis原核心配置文件)

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
   #这里展示的是连接本地数据库,如果是云数据库需要相应修改
    url: jdbc:mysql://localhost:3306/mysql
   #记得设置为自己数据库的账号和密码,这里就不告诉你们我的啦hhh
    username: root
    password: root

mybatis:
  mapper-locations: classpath:mapper/*.xml
  type-aliases-package: com.chf.pojo
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

步骤三:编写Mapper类

Mapper类用于对数据库的直接操作和处理,MVC架构中不同类的功能和业务逻辑可以看我的这一篇博客哦什么是MVC架构?怎么使用Spring MVC架构开发项目-优快云博客

下面是一个简单的增删改查的Mapper类示例,这样写了之后Service类设置业务接口声明、ServiceImpl负责重写并实现Service类的接口并调用相关的Mapper数据库逻辑处理接口

如果你听不懂,可以再去看一下这篇博客~~~什么是MVC架构?怎么使用Spring MVC架构开发项目-优快云博客

import org.apache.ibatis.annotations.*;

import java.util.List;

public interface SensorDataMapper {

    // 插入数据
    @Insert("INSERT INTO NewData (DeviceId, nodeId, Tem, hum, Lng, Lat, cdType, Relaystatus) VALUES (#{DeviceId}, #{nodeId}, #{Tem}, #{hum}, #{Lng}, #{Lat}, #{cdType}, #{Relaystatus})")
    int save(SensorData sensorData);

    // 查询所有数据
    @Select("SELECT * FROM NewData")
    List<SensorData> getAllData();

    // 根据 ID 查询数据
    @Select("SELECT * FROM NewData WHERE id = #{id}")
    SensorData getDataById(int id);

    // 更新数据
    @Update("UPDATE NewData SET DeviceId = #{DeviceId}, nodeId = #{nodeId}, Tem = #{Tem}, hum = #{hum}, Lng = #{Lng}, Lat = #{Lat}, cdType = #{cdType}, Relaystatus = #{Relaystatus} WHERE id = #{id}")
    int update(SensorData sensorData);

    // 删除数据
    @Delete("DELETE FROM NewData WHERE id = #{id}")
    int delete(int id);
}

简单的逻辑可以直接通过在Mapper类中编写sql语句实现,但是比较复杂的逻辑就需要编写Mapper映射文件啦,让我们来看步骤四~

步骤四:编写Mapper映射文件

(1)首先新建一个映射文件SensorDataMapper

通常位于src/main/resources/mappers/目录下,如下图所示

(2)编写映射

这边有三个注意点:

1.首先需要声明正确路径的Mapper类的地址也就是<mapper namespace="com.example.mapper.SensorDataMapper">

2.设定正确的parameterType类型

parameterType: 用于定义传入 SQL 语句的参数类型。

3.设定正确的resultType类型

resultType: 用于定义从 SQL 查询中返回的结果类型。

<?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="com.example.mapper.SensorDataMapper">

    <!-- 插入数据 -->
    <insert id="save" parameterType="com.example.model.SensorData">
        INSERT INTO NewData (DeviceId, nodeId, Tem, hum, Lng, Lat, cdType, Relaystatus)
        VALUES (#{DeviceId}, #{nodeId}, #{Tem}, #{hum}, #{Lng}, #{Lat}, #{cdType}, #{Relaystatus})
    </insert>

    <!-- 查询所有数据 -->
    <select id="getAllData" resultType="com.example.model.SensorData">
        SELECT * FROM NewData
    </select>

    <!-- 根据 ID 查询数据 -->
    <select id="getDataById" parameterType="int" resultType="com.example.model.SensorData">
        SELECT * FROM NewData WHERE id = #{id}
    </select>

    <!-- 更新数据 -->
    <update id="update" parameterType="com.example.model.SensorData">
        UPDATE NewData
        SET DeviceId = #{DeviceId}, nodeId = #{nodeId}, Tem = #{Tem}, hum = #{hum}, Lng = #{Lng}, Lat = #{Lat}, cdType = #{cdType}, Relaystatus = #{Relaystatus}
        WHERE id = #{id}
    </update>

    <!-- 删除数据 -->
    <delete id="delete" parameterType="int">
        DELETE FROM NewData WHERE id = #{id}
    </delete>

</mapper>

mapper映射编写成功之后会有几个带着眼罩的小鸟在这边,这样就代表编写成功啦

步骤五:编写相应的Service类和ServiceImpl类

既然Mapper类都编写完了,那我们把相应的Service类、SercviceImpl类、Model类、Controller类全部都编写一下吧!

Model类

package com.example.sensor2.demos.Model;

public class SensorData {
    private int DeviceId;
    private int nodeId;
    private float Tem;
    private float hum;
    private float Lng;
    private float Lat;
    private float cdType;
    private String Relaystatus;

    public int getDeviceId() {
        return DeviceId;
    }

    public void setDeviceId(int deviceId) {
        DeviceId = deviceId;
    }

    public int getNodeId() {
        return nodeId;
    }

    public void setNodeId(int nodeId) {
        this.nodeId = nodeId;
    }

    public float getTem() {
        return Tem;
    }

    public void setTem(float tem) {
        Tem = tem;
    }

    public float getHum() {
        return hum;
    }

    public void setHum(float hum) {
        this.hum = hum;
    }

    public float getLng() {
        return Lng;
    }

    public void setLng(float lng) {
        Lng = lng;
    }

    public float getLat() {
        return Lat;
    }

    public void setLat(float lat) {
        Lat = lat;
    }

    public float getCdType() {
        return cdType;
    }

    public void setCdType(short cdType) {
        this.cdType = cdType;
    }

    public String getRelaystatus() {
        return Relaystatus;
    }

    public void setRelaystatus(String relaystatus) {
        Relaystatus = relaystatus;
    }
}

Service类

package com.example.service;

import com.example.model.SensorData;

import java.util.List;

public interface SensorDataService {
    int save(SensorData sensorData);
    List<SensorData> getAllData();
    SensorData getDataById(int id);
    int update(SensorData sensorData);
    int delete(int id);
}

ServiceImpl类

package com.example.service.impl;

import com.example.mapper.SensorDataMapper;
import com.example.model.SensorData;
import com.example.service.SensorDataService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service // 标记为 Spring 的服务组件
public class SensorDataServiceImpl implements SensorDataService {

    @Autowired
    private SensorDataMapper sensorDataMapper;

    @Override
    public int save(SensorData sensorData) {
        return sensorDataMapper.save(sensorData);
    }

    @Override
    public List<SensorData> getAllData() {
        return sensorDataMapper.getAllData();
    }

    @Override
    public SensorData getDataById(int id) {
        return sensorDataMapper.getDataById(id);
    }

    @Override
    public int update(SensorData sensorData) {
        return sensorDataMapper.update(sensorData);
    }

    @Override
    public int delete(int id) {
        return sensorDataMapper.delete(id);
    }
}

Controller类

package com.example.controller;

import com.example.model.SensorData;
import com.example.service.SensorDataService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/sensorData")
public class SensorDataController {

    @Autowired
    private SensorDataService sensorDataService;

    @PostMapping
    public int save(@RequestBody SensorData sensorData) {
        return sensorDataService.save(sensorData);
    }

    @GetMapping
    public List<SensorData> getAllData() {
        return sensorDataService.getAllData();
    }

    @GetMapping("/{id}")
    public SensorData getDataById(@PathVariable int id) {
        return sensorDataService.getDataById(id);
    }

    @PutMapping
    public int update(@RequestBody SensorData sensorData) {
        return sensorDataService.update(sensorData);
    }

    @DeleteMapping("/{id}")
    public int delete(@PathVariable int id) {
        return sensorDataService.delete(id);
    }
}

分享就到这里结束啦,希望大家能够结合Springboot项目的MVC架构对Springboot整合Mybatis有更深一步的理解~其实也不是很难~大家多练习肯定能学会的!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值