Springboot整合mybatis,配置驼峰命名转换(例:userId --user_id)

如题:两种配置方式

1.

springboot的配置文件 添加:

mybatis.configuration.mapUnderscoreToCamelCase=true 或

mybatis.configuration.map-underscore-to-camel-case=true(根据版本不同)

2.通过@configuration配置的方式

@Bean(name = "sqlSessionFactory")
    public SqlSessionFactory sqlSessionFactoryBean() throws IOException {
        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
        bean.setDataSource(dataSource);
        PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
        bean.setMapperLocations(resolver.getResources("classpath:/mapper/**/**.xml"));
        try {
            //开启驼峰命名转换
            bean.getObject().getConfiguration().setMapUnderscoreToCamelCase(true);
            return bean.getObject();
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }
    }

 

<think>我们正在讨论Spring Boot整合MyBatis-Plus后使用XML的方法。根据提供的引用,我们可以总结如下: 引用[1]和[2]提到了Spring Boot整合MyBatis-Plus的基本步骤,包括添加依赖。 引用[3]介绍了MyBatis-Plus的核心组件和运行原理,提到它通过自动扫描实体生成代码,但并没有直接提到XML的使用。 引用[4]展示了使用MyBatis-Plus的ServiceImpl类和Controller的示,但也没有使用XML。 引用[5]展示了Spring Boot整合MyBatis(非Plus)时使用XML的方式,包括创建数据库表、使用mapper.xml文件等。 然而,用户的问题是整合MyBatis-Plus后如何使用XML。我们知道MyBatis-Plus是对MyBatis的增强,它保留了MyBatis的所有特性,包括使用XML映射文件。 因此,整合MyBatis-Plus后使用XML的方法与整合MyBatis时类似,但需要注意以下几点: 1. 在配置文件中指定XML映射文件的位置。 2. 在Mapper接口中,可以通过注解或者XML文件来编写SQL。如果使用XML,则需要将XML文件放在指定的资源目录下,并确保其路径与Mapper接口的包名对应。 具体步骤: **Step 1: 添加依赖** 在pom.xml中添加MyBatis-Plus的Spring Boot Starter依赖(参考引用[1])。 **Step 2: 配置application.yml** 在配置文件中,除了配置数据源外,还需要指定MyBatis的mapper-locations,即XML文件的位置。 如: ```yaml mybatis-plus: mapper-locations: classpath*:mapper/**/*.xml ``` **Step 3: 创建Mapper接口** 在Mapper接口中,可以定义方法,然后通过XML文件来实现SQL映射。 如: ```java public interface UserMapper extends BaseMapper<User> { // 如果BaseMapper中提供的方法不能满足需求,可以自定义方法 User selectUserByName(String name); } ``` **Step 4: 创建XML映射文件** 在resources目录下创建对应的目录结构(如:mapper/UserMapper.xml),然后编写SQL。 如: ```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="selectUserByName" resultType="com.example.entity.User"> SELECT * FROM user WHERE name = #{name} </select> </mapper> ``` **Step 5: 使用Mapper** 在Service或Controller中注入Mapper,并调用方法。 注意:MyBatis-Plus的BaseMapper已经提供了很多基础方法,对于复杂查询可以自定义方法并使用XML实现。 另外,引用[5]中展示了的Spring Boot整合MyBatis时使用XML的方式,同样适用于MyBatis-Plus,因为MyBatis-Plus是MyBatis的增强,兼容所有MyBatis的特性。 总结:在Spring Boot整合MyBatis-Plus后,使用XML编写SQL的步骤与使用MyBatis时基本一致,只需确保在配置文件中正确指定XML文件的位置,并在Mapper接口中定义与XML中id对应的方法即可。 相关问题: 1. 如何在MyBatis-Plus中同时使用注解和XML配置? 2. MyBatis-Plus的BaseMapper已经提供了很多方法,什么情况下需要自定义XML? 3. 如何解决MyBatis-Plus中XML映射文件不被加载的问题? </think>### Spring Boot整合MyBatis-Plus后使用XML的方法 在Spring Boot整合MyBatis-Plus后,虽然MyBatis-Plus提供了强大的注解式开发能力,但仍可通过XML文件实现更复杂的SQL操作。以下是具体实现方法: #### 1. **配置XML映射文件路径** 在`application.yml`中配置XML文件扫描路径: ```yaml mybatis-plus: mapper-locations: classpath*:/mapper/**/*.xml # XML文件存放位置 configuration: map-underscore-to-camel-case: true # 自动驼峰转换 ``` #### 2. **创建XML映射文件** 在`resources/mapper/`目录下创建XML文件(如`UserMapper.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"> <!-- 对应Mapper接口全限定名 --> <!-- 复杂查询示 --> <select id="selectUserWithRole" resultType="com.example.entity.User"> SELECT u.*, r.role_name FROM user u JOIN user_role ur ON u.id = ur.user_id JOIN role r ON ur.role_id = r.id WHERE u.id = #{userId} </select> <!-- 动态SQL示 --> <update id="updateUserSelective"> UPDATE user <set> <if test="name != null">name = #{name},</if> <if test="email != null">email = #{email},</if> </set> WHERE id = #{id} </update> </mapper> ``` #### 3. **Mapper接口声明方法** 在Mapper接口中添加与XML映射的抽象方法: ```java public interface UserMapper extends BaseMapper<User> { // 扩展BaseMapper未覆盖的方法 User selectUserWithRole(@Param("userId") Long userId); int updateUserSelective(User user); } ``` #### 4. **Service层调用** 在Service实现类中注入Mapper并调用方法: ```java @Service public class UserServiceImpl extends ServiceImpl<UserMapper, User> { public User getUserWithRole(Long userId) { return baseMapper.selectUserWithRole(userId); // 调用XML映射方法 } } ``` #### 关键注意事项: 1. **XML与注解共存**:在同一Mapper中可混用XML和`@Select`等注解,但需避免方法名冲突 2. **XML优先级**:当XML和注解定义同一方法时,XML配置优先级更高[^3] 3. **动态SQL支持**:XML中可直接使用MyBatis原生动态标签(`<if>`, `<foreach>`等) 4. **复杂映射**:通过`<resultMap>`实现嵌套结果映射,处理一对多/多对一关系 > **优势场景**:XML适用于动态条件查询、多表关联查询、批量操作等复杂SQL场景,而常规CRUD建议使用MyBatis-Plus注解方式提升效率[^1][^3]。 --- ### 相关问题 1. MyBatis-Plus中XML与注解方式如何选择更高效? 2. 如何在MyBatis-Plus的XML中使用分页插件? 3. MyBatis-Plus的BaseMapper已提供基础CRUD,什么场景下仍需自定义XML? 4. 多表关联查询时,MyBatis-Plus的`@TableField`注解有哪些局限? 5. 如何调试MyBatis-Plus项目中XML映射文件不生效的问题? [^1]: MyBatis-Plus核心组件设计原理 [^3]: MyBatis-Plus自动映射机制说明 [^4]: 扩展BaseMapper的实现模式 [^5]: 原生MyBatis整合对比参考
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值