一、介绍
Mybatis的中文官网并没找到与SpringBoot最新的集成的教程,有的都是老式的配置方法,所以记录一下怎么我是怎么集成SpringBoot 3.1.7 集成Mybatis 的方法
有条件的可以打开源网站 https://github.com/mybatis/spring-boot-starter
没有条件的我收藏了一个国内镜像 mybatis-spring-boot-starter: Mybatis官方spring-boot-starter
二、集成步骤
1. 官网生成Mybatis工程
官方介绍了,SpringBoot 3.0-3.2 可以使用最新的Mybatis集成方式,并且可以通过Spring Initializr方式生成
- https://start.spring.io/#!dependencies=mybatis
打开后,我们可以进入到这个页面,点击GENERATE生成
下载得到一个压缩包,打开压缩包,我们查看maven依赖文件pom.xml 可以看到
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>3.0.3</version>
</dependency>
这个生成的SpringBoot工程,我们可以直接使用,也可以只把这个依赖加入到我们自己已有的工程,我这边已经有了一个工程了,所以只需要把上面的依赖添加到我自己的项目即可
2. 添加数据库连接池 druid
从github官网可以得知,SpringBoot2.x 与 druid 的集成方式
参考:https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98
参考:https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter
不过这里我试了,即使使用最新的版本 1.2.21,启动依然会报错
但是看到官网上面了一个druid-spring-boot-3-starter 包,目前还没有写描述,但是我们可以替换一下artifactId,启动之后没有再报错了
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-3-starter</artifactId>
<version>1.2.20</version>
</dependency>
另外Druid 引入需要添加配置到application.yml,下面的配置你可以安装你的项目改造数据库的连接参数,配置详情参考:https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.jdbc.Driver
druid:
url: jdbc:mysql://192.168.31.111:3306/goods_center_db?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8
username: root
password: 123456
initial-size: 10
max-active: 100
min-idle: 10
max-wait: 60000
pool-prepared-statements: true
max-pool-prepared-statement-per-connection-size: 20
time-between-eviction-runs-millis: 60000
min-evictable-idle-time-millis: 300000
#validation-query: SELECT 1 FROM DUAL
test-while-idle: true
test-on-borrow: false
test-on-return: false
stat-view-servlet:
enabled: true
url-pattern: /druid/*
#login-username: admin
#login-password: admin
filter:
stat:
log-slow-sql: true
slow-sql-millis: 1000
merge-sql: false
wall:
config:
multi-statement-allow: true
3. 引入mysql-connector-java驱动包
可以在maven官方网站中搜索MySQL,可以找到两个Java-MySQL驱动包,这两个我都试过了,都能正常的连接MySQL,所以随便用那个都行,我看了看下面这个用的人多7418个使用
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.28</version>
</dependency>
注意:这里有个要注意的地方,我安装的MySQL版本是5.7.44 ,我以为驱动应该也要找5.xx.xx的版本,实际上我试了一下,5.1.xx版本会报错,换成8.0.xx就可以了,具体原因尚不知晓,谁知道的可以在评论区告诉我一下,万分感谢!!!
三、配置Mybatis
架包依赖完成了,还需要对Mybatis进行配置才能使用
配置详情:mybatis-spring-boot-autoconfigure – Introduction
这里我用的配置,指定文件mapper的位置
mybatis:
mapper-locations: classpath:mapper/**/*Mapper.xml
在Mybatis官网的入门案例中有一个mapper.xml 样例
参考地址:https://mybatis.net.cn/getting-started.html
安装官方的样例,写出了我的第一个GoodInfoMapper.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.ychen.goodscenter.mapper.GoodsInfoMapper">
<select id="queryGoodsInfoById" resultType="com.ychen.goodscenter.entity.GoodsInfoEntity">
select * from goods_info_tab where id = #{id}
</select>
</mapper>
在创建一个mapper.java 文件GoodsInfoMapper.java
package com.ychen.goodscenter.mapper;
import com.ychen.goodscenter.entity.GoodsInfoEntity;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface GoodsInfoMapper {
GoodsInfoEntity queryGoodsInfoById(Long id);
}
GoodsInfoEntity
package com.ychen.goodscenter.entity;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
@Data
public class GoodsInfoEntity {
private Long id;
private String goodsName;
private Long sellerId;
private Integer stock;
private Integer sold;
private BigDecimal price;
private Date createTime;
private Date updateTime;
}
四、准备数据库
CREATE TABLE goods_info_tab (
`id` BIGINT(20) NOT NULL,
`goods_name` VARCHAR(30) NOT NULL COMMENT '商品名称',
`seller_id` BIGINT(20) NOT NULL COMMENT '卖家ID',
`stock` int(11) NOT NULL COMMENT '库存',
`sold` int(11) NOT NULL COMMENT '已售数量',
`price` DECIMAL(20,5) NOT NULL COMMENT '单价',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT '商品表';
准备好数据库,就可以测试了