一招搞定SpringBoot 多模块集成MyBatis的mapper路径配置
2022-12-29 07:22:46
SpringBoot 多模块集成 MyBatis:告别 Mapper 路径配置烦恼
简介
在 SpringBoot 多模块项目中集成 MyBatis,一个常见的挑战是如何正确配置 Mapper 路径。本文将深入探讨 MyBatis 配置的细节,并提供一步步的解决方案,帮助您轻松解决 Mapper 找不到的问题。
Mapper 配置
要配置 MyBatis,需要在每个模块中遵循以下步骤:
- 添加 MyBatis 依赖项:
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.9</version>
</dependency>
- 创建 mybatis-config.xml 文件:
在每个模块的 resources 文件夹下,创建 mybatis-config.xml 文件,其中包含 MyBatis 的基本设置:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<setting name="cacheEnabled" value="true" />
<setting name="lazyLoadingEnabled" value="true" />
...
<setting name="defaultExecutorType" value="SIMPLE" />
<setting name="defaultStatementTimeout" value="25000" />
</settings>
</configuration>
- 创建 Mapper.xml 文件:
在每个模块的 mapper 文件夹下,创建相应的 Mapper.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.example.mapper.UserMapper">
<select id="getUserById" resultType="com.example.entity.User">
SELECT * FROM user WHERE id = #{id}
</select>
</mapper>
- 配置 application.properties:
在每个模块的 application.properties 文件中,配置 MyBatis 的属性:
# MyBatis 配置
mybatis.configuration.default-statement-timeout=25000
mybatis.configuration.default-fetch-size=100
...
mybatis.mapper-locations=classpath:mybatis/*/*.xml
启动类配置
在每个模块的启动类中,添加以下代码:
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
@Bean
public SqlSessionFactory sqlSessionFactory() throws Exception {
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(dataSource());
factoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:mybatis/*/*.xml"));
return factoryBean.getObject();
}
@Bean
public DataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setUrl("jdbc:mysql://localhost:3306/test");
dataSource.setUsername("root");
dataSource.setPassword("123456");
return dataSource;
}
}
通过上述步骤,您可以轻松配置 MyBatis,并解决 Mapper 路径配置问题。
常见问题解答
1. 启动应用时找不到 Mapper 文件:
检查 mapper-locations 配置是否正确,是否包含了所有需要的 Mapper.xml 文件。
2. 使用动态 SQL 时出现解析错误:
升级 MyBatis 版本到最新版本。
3. 使用 @Param 注解找不到参数:
在 Mapper 接口中添加 @Param 注解。
4. 如何使用 Maven 依赖项管理 MyBatis:
在 pom.xml 中添加以下依赖项:
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.9</version>
</dependency>
5. 如何自定义 MyBatis 的日志记录:
在 logback.xml 或 log4j2.xml 配置文件中配置 MyBatis 的日志记录器。
结论
通过遵循本指南,您可以轻松集成 MyBatis 并解决 SpringBoot 多模块项目中常见的 Mapper 路径配置问题。通过灵活的配置选项和强大的功能,MyBatis 可以显著提高您的应用程序的性能和可扩展性。