SpringBoot 集成 MyBatis
添加依赖
pom.xml 添加版本
xml
<properties>
......
<com.alibaba.druid>1.2.15</com.alibaba.druid>
<mybatis.spring.boot>2.3.0</mybatis.spring.boot>
</properties>pom.xml 添加依赖
xml
<dependencies>
......
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>${com.alibaba.druid}</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis.spring.boot}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>添加配置文件
- url: 数据库地址
- username: 数据库账号
- password: 数据库密码
spring:
......
datasource:
name: mysql
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
url: jdbc:mysql://127.0.0.1:3306/fly-next?useUnicode=true&characterEncoding=UTF8&createDatabaseIfNotExist=true&useUnicode=true&useSSL=false&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&allowMultiQueries=true
username: root
password: root
druid:
initial-size: 5
min-idle: 5
max-active: 20
max-wait: 60000
test-while-idle: true
time-between-eviction-runs-millis: 60000
min-evictable-idle-time-millis: 30000
validation-query: SELECT 1 FROM DUAL
test-on-borrow: false
test-on-return: false
pool-prepared-statements: false
filters: stat,wall,slf4j
# mybatis
mybatis:
type-aliases-package: com.github.itdachen.**.vo
mapperLocations: classpath*:mapper/**/*.xml
configuration:
map-underscore-to-camel-case: true
call-setters-on-nulls: true
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl完整的 yml 配置文件
server:
port: 8080
fly:
version: 1.0
spring:
application:
name: spring-boot-demo
thymeleaf:
mode: HTML5
cache: false
encoding: utf-8
datasource:
name: mysql
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
url: jdbc:mysql://127.0.0.1:3306/fly-next?useUnicode=true&characterEncoding=UTF8&createDatabaseIfNotExist=true&useUnicode=true&useSSL=false&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&allowMultiQueries=true
username: root
password: root
druid:
# 初始化时建立物理连接的个数
initial-size: 5
# 连接池的最小空闲数量
min-idle: 5
# 连接池最大连接数量
max-active: 20
# 获取连接时最大等待时间,单位毫秒
max-wait: 60000
# 申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。
test-while-idle: true
# 既作为检测的间隔时间又作为testWhileIdel执行的依据
time-between-eviction-runs-millis: 60000
# 销毁线程时检测当前连接的最后活动时间和当前时间差大于该值时,关闭当前连接(配置连接在池中的最小生存时间)
min-evictable-idle-time-millis: 30000
# 用来检测数据库连接是否有效的sql 必须是一个查询语句(oracle中为 select 1 from dual)
validation-query: SELECT 1 FROM DUAL
# 申请连接时会执行validationQuery检测连接是否有效,开启会降低性能,默认为true
test-on-borrow: false
# 归还连接时会执行validationQuery检测连接是否有效,开启会降低性能,默认为true
test-on-return: false
# 是否缓存preparedStatement, 也就是PSCache,PSCache对支持游标的数据库性能提升巨大,比如说oracle,在mysql下建议关闭。
pool-prepared-statements: false
# 置监控统计拦截的filters,去掉后监控界面sql无法统计,stat: 监控统计、Slf4j:日志记录、waLL: 防御sqL注入
filters: stat,wall,slf4j
# mybatis
mybatis:
type-aliases-package: com.github.itdachen.**.vo
mapperLocations: classpath*:mapper/**/*.xml
configuration:
map-underscore-to-camel-case: true
call-setters-on-nulls: true
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl启动类添加 MyBatis 扫描路径
@MapperScan(basePackages = "com.github.itdachen.**.mapper")测试
创建数据库 Sql
CREATE TABLE `fly_student_info` (
`id` varchar(36) CHARACTER SET utf8mb4 NOT NULL COMMENT '主键唯一标识',
`name` varchar(50) CHARACTER SET utf8mb4 NULL DEFAULT NULL COMMENT '姓名',
`school_id` varchar(36) CHARACTER SET utf8mb4 NULL DEFAULT NULL COMMENT '所属学校',
`academy_id` varchar(36) CHARACTER SET utf8mb4 NULL DEFAULT NULL COMMENT '所属学院',
`birthday` varchar(50) CHARACTER SET utf8mb4 NULL DEFAULT NULL COMMENT '出生日期',
`stu_no` varchar(50) CHARACTER SET utf8mb4 NULL DEFAULT NULL COMMENT '学号',
`sex` varchar(1) CHARACTER SET utf8mb4 NULL DEFAULT NULL COMMENT '性别',
`remarks` varchar(255) CHARACTER SET utf8mb4 NULL DEFAULT NULL COMMENT '描述',
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
`create_user_id` varchar(36) CHARACTER SET utf8mb4 NULL DEFAULT NULL COMMENT '创建人ID',
`create_user` varchar(50) CHARACTER SET utf8mb4 NULL DEFAULT NULL COMMENT '创建人',
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
`update_user_id` varchar(36) CHARACTER SET utf8mb4 NULL DEFAULT NULL COMMENT '更新人ID',
`update_user` varchar(50) CHARACTER SET utf8mb4 NULL DEFAULT NULL COMMENT '更新人',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 ROW_FORMAT = Dynamic;添加 mapper 接口
创建 mapper 包, 创建 IStudentInfoMapper 接口
public interface IStudentInfoMapper {
/***
* 测试查询学生数量
*
* @author 王大宸
* @date 2023/8/12 18:23
* @return java.lang.Integer
*/
Integer findCount();
}添加 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.github.itdachen.mapper.IStudentInfoMapper">
<select id="findCount" resultType="java.lang.Integer">
SELECT COUNT(id)
FROM fly_student_info
</select>
</mapper>注意: mapper.xml 文件中的 namespace 属性, 要与 IStudentInfoMapper 类的路径对应 
添加测试类
在 test 文件夹下创建 com.github.itdachen 包, 并创建 SpringBootDemoBootstrapTests 类
@SpringBootTest
public class SpringBootDemoBootstrapTests {
@Test
public void content() {
}
@Autowired
private IStudentInfoMapper studentInfoMapper;
@Test
public void contentStudentInfo() {
Integer count = studentInfoMapper.findCount();
System.out.println("当前学生数量为: " + count);
}
}执行 contentStudentInfo() 方法, 控制台打印: 当前学生数量为: 0
本章节项目目录

剑鸣秋朔