
SpringBoot与Mybatis整合教程:注解与XML配置对比
下载需积分: 50 | 122KB |
更新于2025-01-26
| 38 浏览量 | 举报
收藏
SpringBoot作为一款轻量级的Java开发框架,以其约定优于配置的理念,简化了Spring应用的初始搭建以及开发过程。MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。整合SpringBoot和MyBatis是Java后端开发中常见的需求。
### SpringBoot整合Mybatis的知识点
#### 1. 项目结构和依赖配置
在SpringBoot项目中整合Mybatis通常需要引入相关的依赖,这些依赖通过Maven或Gradle构建工具进行配置。以下是一个典型的SpringBoot项目在Maven的`pom.xml`中配置Mybatis和数据库驱动的依赖示例:
```xml
<dependencies>
<!-- SpringBoot核心依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!-- SpringBoot数据源和JDBC自动配置 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!-- MyBatis整合SpringBoot的Starter -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>版本号</version>
</dependency>
<!-- 数据库连接池,比如HikariCP -->
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
</dependency>
<!-- MySQL连接驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!-- 其他可能需要的依赖... -->
</dependencies>
```
#### 2. 注解版配置
在SpringBoot中使用MyBatis的注解版配置,主要包括以下几个步骤:
- 创建Mapper接口并标注`@Mapper`,这个接口会与MyBatis的Mapper XML文件或者注解相对应。
- 使用MyBatis提供的`@Select`、`@Insert`、`@Update`和`@Delete`等注解在Mapper接口上编写SQL语句。
- 在SpringBoot配置文件(比如`application.properties`或`application.yml`)中配置MyBatis的相关属性。
以下是一个简单的Mapper接口例子:
```java
@Mapper
public interface UserMapper {
@Select("SELECT * FROM user WHERE id = #{id}")
User getUserById(Integer id);
@Insert("INSERT INTO user(name, email) VALUES(#{name}, #{email})")
int insertUser(User user);
// ...更多Mapper方法...
}
```
#### 3. XML配置
虽然SpringBoot推荐使用注解简化开发,但在某些复杂场景下,使用XML配置的MyBatis依然有其优势。配置步骤如下:
- 创建Mapper XML文件,并指定其namespace为对应的Mapper接口路径。
- 在Mapper XML文件中定义SQL语句。
- 在Mapper接口中使用`@Mapper`注解,并通过`@Mapper`的`sqlSessionFactoryRef`属性引用`sqlSessionFactory`。
- 在SpringBoot配置文件中指定XML文件的位置和别名等配置。
示例的Mapper XML文件:
```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.example.mapper.UserMapper">
<select id="getUserById" resultType="com.example.model.User">
SELECT * FROM user WHERE id = #{id}
</select>
<insert id="insertUser">
INSERT INTO user(name, email) VALUES(#{name}, #{email})
</insert>
<!-- ...更多SQL映射... -->
</mapper>
```
#### 4. 数据源配置
SpringBoot为数据源的配置提供了默认支持,不过通常需要通过配置文件手动配置一些特定参数。在`application.properties`或`application.yml`中,可以设置数据库连接的相关属性:
```properties
# DataSource properties
spring.datasource.url=jdbc:mysql://localhost:3306/数据库名?useSSL=false&serverTimezone=UTC
spring.datasource.username=用户名
spring.datasource.password=密码
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# HikariCP 数据库连接池配置
spring.datasource.hikari.maximum-pool-size=10
spring.datasource.hikari.pool-name=MyHikariCP
spring.datasource.hikari.connection-timeout=30000
```
#### 5. MyBatis配置
对于MyBatis的配置,SpringBoot通过`application.properties`或`application.yml`文件允许你覆盖默认的配置,并进行一些细粒度的调整:
```properties
# MyBatis配置
mybatis.mapper-locations=classpath:mapper/*.xml
mybatis.type-aliases-package=com.example.model
mybatis.configuration.map-underscore-to-camel-case=true
```
这里指定了Mapper XML文件的位置、别名包路径以及配置项,例如是否将下划线自动转为驼峰命名。
#### 6. 扫描Mapper接口
要使SpringBoot能自动识别和注册Mapper接口,可以在配置类上添加`@MapperScan`注解,并指定接口所在的包路径:
```java
@SpringBootApplication
@MapperScan("com.example.mapper")
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
```
#### 7. 事务管理
对于事务管理,SpringBoot支持声明式事务管理。通过在配置类中添加`@EnableTransactionManagement`注解,并使用`@Transactional`注解来管理事务:
```java
@SpringBootApplication
@EnableTransactionManagement
public class MyApplication {
// ...
}
```
然后在需要事务管理的方法或类上使用`@Transactional`注解。
#### 8. 操作数据库的实践
结合上述配置,可以在服务层中注入Mapper接口,通过调用Mapper中的方法来实现数据的CRUD操作。
通过这些知识点的介绍,可以看出SpringBoot与Mybatis的整合不仅能够利用SpringBoot简化配置的特性,同时还能兼顾Mybatis灵活操作数据库的优势。无论是选择注解版还是XML配置,两者都能在SpringBoot的环境下高效地工作。
相关推荐








浅瞳夜未
- 粉丝: 156
最新资源
- Word 2007中文版实用教程解析与应用
- 0.1.0版本老板软件:实现分层透明窗体及窗口自定义功能
- 成功在SUSE Linux 11上安装T61指纹识别软件
- Java程序语言设计课程PPT解析
- 轻松下载wannengUSB20:完整教程指南
- 单线程DES加密软件:适用于小文件快速加密
- 探索MFC实现透明Flash金鱼效果的技术
- UGOPEN API开发指南与VC 6.0向导文件
- 何立民《单片机教程习题与解答》全面覆盖初、中、高级
- Java程序实现用户登录与体重诊断测试
- 基于MySQL实现JSP_JDBC的真分页技术教程
- 解决map中CArray类复制构造函数错误问题
- 轻松打造虚拟硬盘——多尺寸一次性解决
- 揭开古董级游戏Quake3源码的神秘面纱
- 全面覆盖的学校操作系统教学课件
- 深入解析Windows API函数使用指南
- Delphi毕业设计全流程攻略:源码、论文、答辩全解析
- Qt4图形界面设计教程完整系列
- HTML与JavaScript综合实用教程解读
- 掌握ListView控件的简单应用及其实用价值
- 掌握歌词编辑器使用技巧与应用
- 图解 Apache Tomcat 的六大核心概念
- NET Reflector 反编译工具详解与核心组件
- 深入探索软件工程知识体系:闫菲《软件工程(第二版)》电子教案