1. 导入依赖
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.3</version>
</dependency>
2. 在配置文件中配置数据库连接信息:
# 服务端口
server:
port: 8080
# 配置数据源
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/ESP32DHT11?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8
username: root
password: password
# springboot 整合mybatis的配置
mybatis:
# 配置别名
type-aliases-package: com.wyf.esp32dht11.pojo
# 配置mapper.xml文件的地址
mapper-locations: classpath:mybatis/mapper/*.xml
在配置文件中,关于Mybatis整合的最核心的两个配置如下所示:
# springboot 整合mybatis的配置
mybatis:
# 配置别名,即mapper.xml文件中用到的实体类的包名
type-aliases-package: com.wyf.esp32dht11.pojo
# 配置mapper.xml文件的地址
mapper-locations: classpath:mybatis/mapper/*.xml
其中, type-aliases-package配置项,用来设置一些别名来替代Java的长类型声明(如: java.lang.int变为int),减少配置编码的冗余。即在mapper.xml文件中resultMap的type、parameterType、resultType会引用一些实体类,我们需要写上全限定类名,如果不写全限定类名,只写一个实体类的名称的话,那就需要在application.yml文件中设置mybatis:type-aliases-package参数。
而 mapper-locations则指定了Mapper.xml文件的地址,一般在resources。
3. 数据库表示例:
创建该数据表对应的pojo对象,如下所示:
/**
* 温湿度数据
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class TempHumi {
private int id;
private String temp;
private String humi;
private Date dht11Date;
}
4. 创建Mapper接口
@Mapper // 该注解表示这是一个mybatis的Mapper类
@Repository
public interface TempHumiMapper {
/**
* 插入操作
* @param tempHumi
* @return
*/
int addTempHimi(TempHumi tempHumi);
}
如上所示,创建了一个Mapper接口,其中只有一个插入数据的方法!此处需要注意的是注解@Mapper,这个注解表示的该接口是一个mapper接口。当然,我们也可以使用包扫描的方式,将指定包下的所有接口扫描为mapper接口,如下所示:
@SpringBootApplication
@MapperScan("com.wyf.esp32dht11.mapper")
public class Esp32Dht11Application {
public static void main(String[] args) {
SpringApplication.run(Esp32Dht11Application.class, args);
}
}
以上两种注解方式都可以将接口作为mapper类,选择一种就好。
5. 创建Mapper接口所对应的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="com.wyf.esp32dht11.mapper.TempHumiMapper">
<insert id="addTempHimi" parameterType="TempHumi">
insert into `temp-humi`(temp,humi,dht11Date) values (#{temp},#{humi},#{dht11Date})
</insert>
</mapper>
6. 测试
/**
* 测试数据库配置是否正确
*/
@Autowired
DataSource dataSource;
@Test
void dataSourceTest() throws SQLException {
System.out.println(dataSource.getClass());
System.out.println(dataSource.getConnection());
}
/**
* 测试向数据库中插入一条数据
*/
@Autowired
private TempHumiMapper tempHumiMapper;
@Test
void addTempHuimData(){
TempHumi tempHumi = new TempHumi();
tempHumi.setTemp("30");
tempHumi.setHumi("77%");
tempHumi.setDht11Date(new Date(System.currentTimeMillis()));
int result = tempHumiMapper.addTempHimi(tempHumi);
System.out.println(result);
}