目录
步骤五:编写相应的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有更深一步的理解~其实也不是很难~大家多练习肯定能学会的!