Spring Boot整合MyBatis
引入MyBatis和数据库驱动依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.15</version>
</dependency>
使用mybatis-spring-boot-starter,这样可以减少很多配置
-
减少XML配置;
-
自动检测存在的DataSource;
-
自动使用SqlSessionFactoryBean传递DataSource作为一个输入创建和注册一个SqlSessionFactory实例;
-
自动使用SqlSessionFactory创建和注册一个SqlSessionTemplate实例;
-
自动扫描mapper,连接这些mapper和SqlSessionTemplate并注册mapper到spring上下文,这样一来这些mapper就可以被注入为您的bean
在SSM架构中,使用MyBatis需要手动配置DataSource,SqlSessionFactory(配置数据源和Mybatis配置文件),MapperScannerConfigurer(扫描Mapper接口类)等,在Mybatis配置文件中可以配置实体别名和mapper的xml文件
使用Mybatis-spring-boot-starter,这些配置都可以在applicaton.yml配置文件中配置
使用Druid数据源
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.6</version>
</dependency>
使用阿里的druid作为数据库连接池,该连接池实现了监控的功能
使用MyBatis
SpringBoot中MyBatis的配置
spring:
# 数据源(数据库连接)配置
datasource:
druid:
url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF8&zeroDateTimeBehavior=convertToNull&useSSL=true&allowMultiQueries=true&serverTimezone=Asia/Hong_Kong
username: root
password: ranger
# 连接池配置
initial-size: 5
min-idle: 5
max-active: 20
max-wait: 30000 # 连接超时时间
# 配置检测可以关闭的空闲连接间隔时间
time-between-eviction-runs-millis: 60000
# 配置连接在池中的最小生存时间
min-evictable-idle-time-millis: 300000
test-while-idle: true
test-on-borrow: false
test-on-return: false
# WebStatFilter配置
web-stat-filter:
enabled: true
# 添加过滤规则
url-pattern: /*
# 忽略过滤的格式
exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*'
# StatViewServlet配置
stat-view-servlet:
enabled: true
# 访问路径为/druid时,跳转到StatViewServlet
url-pattern: /druid/*
# 是否能够重置数据
reset-enable: false
# 需要账号密码才能访问控制台
login-username: druid
login-password: ranger
# 配置StatFilter
filter:
stat:
log-slow-sql: true
driver-class-name: com.mysql.jdbc.Driver
# MyBatis的配置
mybatis:
# mapper的xml扫描路径
mapper-locations: classpath:mapper/*.xml
# type alias的扫描路径
type-aliases-package: com.ranger.boot.mybatis.entity
# mybatis配置文件
# config-location: classpath:mybatis-config.xml
启动类配置
@SpringBootApplication
// Mapper接口类扫描包
@MapperScan("com.ranger.boot.mybatis.mapper")
public class MyBatisApplication {
public static void main(String[] args) {
SpringApplication.run(MyBatisApplication.class,args);
}
}
编写对应的实体类,Mapper接口文件和xml文件
public interface UserMapper {
List<User> queryUser();
}
public class User {
private String name;
private int age;
// getter,setter,toString
}
<?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.ranger.boot.mybatis.mapper.UserMapper">
<select id="queryUser" resultType="com.ranger.boot.mybatis.entity.User">
select * from user;
</select>
</mapper>
- 编写controller类调用UserMapper的方法,提供测试接口
@SpringBootApplication
@MapperScan("com.ranger.boot.mybatis.mapper")
@Controller
public class MyBatisApplication {
@Autowired
private UserMapper userMapper;
public static void main(String[] args) {
SpringApplication.run(MyBatisApplication.class,args);
}
@RequestMapping("users")
@ResponseBody
public List<User> getAllUser(){
return userMapper.queryUser();
}
}
最后启动应用访问users接口,就可以看到数据库中user表所有的记录
结束
简单的语句只需要使用@Insert、@Update、@Delete、@Select
这4个注解即可,动态SQL语句需要使用@InsertProvider、@UpdateProvider、@DeleteProvider、@SelectProvider
等注解,具体使用可以参考MyBatis官方文档