file-type

SpringBoot与Mybatis整合教程:注解与XML配置对比

下载需积分: 50 | 122KB | 更新于2025-01-26 | 200 浏览量 | 29 下载量 举报 收藏
download 立即下载
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的环境下高效地工作。

相关推荐