SpringBoot+Mybatis整合
SpringBoot底层对Mybatis有良好的支持,开发者只需要引入springboot的starter和myabtis针对springboot的starter就可以使用使用Mybatis来操作数据库了。
工具和版本
Mysql 8.0.21 (严格区分数据库版本5.x的驱动和8.x的不一样) Mybatis 3.x
Druid(数据库连接池,在pom里导入即可) idea
配置模式使用Mybatis
项目的所有依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- <dependency>-->
<!-- <groupId>com.alibaba</groupId>-->
<!-- <artifactId>druid</artifactId>-->
<!-- <version>1.1.24</version>-->
<!-- </dependency>-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.17</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.1</version>
</dependency>
</dependencies>
- 全局配置文件
- SqlSessionFactory:自动配置好了
- SqlSession:自动配置了SqlSessionTemplate****组合了SqlSession
- @Import(AutoConfiguredMapperScannerRegistrar.class)
- Mapper只要我们写的操作Mybatis的接口标注了**@Mapper** 就会被自动扫描进来
在application.yaml中(代替application.properties)配置:
配置了数据源信息和druid,其中监控的这些是ali的特性,可以不用管
配置mybatis.configuration下面的所有 就是相当于改mybatis全局配置文件中的值
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/db_account?useSSL=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
username: root
password: 123456
druid:
aop-patterns: com.krystal.boot.*
filters: stat,wall
stat-view-servlet: #监控页面的配置
enabled: true
login-username: admin
login-password: admin
reset-enable: false
web-stat-filter:
enabled: true #监控web应用的
url-pattern: /*
exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*'
filter:
stat:
slow-sql-millis: 1000
log-slow-sql: true
enabled: true
wall:
enabled: true
config:
drop-table-allow: false
jdbc:
template:
query-timeout: 3
#配置mybatis规则
mybatis:
# config-location: classpath:mybatis-config.xml
mapper-locations: classpath:mybatis/mapper/*.xml
configuration: #指定mybatis全局配置文件中的相关配置项
map-underscore-to-camel-case: true
mybatis-config.xml已经不需要了 但我们需要些xxxMapper.xml配置文件写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.krystal.boot.mapper.AccountMapper">
<select id="getAcct" resultType="com.krystal.boot.bean.Account">
select * from account_tb1 where id = #{id}
</select>
</mapper>
实体层,service层(接口加实现类),在controller里面调用service接口,用@Autowired注入 调用业务方法即可。
注意事项:
- 导入mybatis官方starter
- 编写mapper接口。一定要标注@Mapper注解
- 编写sql映射文件并绑定mapper接口
- 在application.yaml指定Mapper配置文件的位置,以及指定全局配置文件的信息(建议:直接配置在mybatis.configuration)
注解模式使用Mybatis
@Select("select * from city where id=#{id}")
public City getById(Long id);
记得加@Mapper注解
注解开发直接加注解就行了,其他在配置文件里面就配置好了
最佳实战:
- 引入mybatis-starter
- 配置application.yaml中,指定mapper-location位置即可
- 编写Mapper接口并编写@Mapper注解
- 简单方法直接注解方式
- 复杂方法编写mapper.xml进行绑定映射
- 使用在启动类里写上@MapperScan(“com.krystal.boot.mapper”) 其他的mapper接口就不需要再写注解了
使用Springboot使用Mybatis配置比较简单 ,很多底层都是默认的。相比SpringMVC,使用还是便捷的。