mybatis xml错误: include with refid ‘com.newwebla.user.mapper.RoleMapper.Base_Column_List‘

在启动项目时遇到MyBatis报错,错误信息提示无法找到'com.newwebla.user.mapper.RoleMapper.Base_Column_List'的SQL语句。问题根源在于RoleMapper.xml文件中缺失了Base_Column_List。解决方案是添加缺失的查询字段,或者直接修改为所需查询的字段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天启动项目的时候报错了一个mybatis xml的错误,记录一下,完整的日志

org.apache.ibatis.builder.IncompleteElementException: Could not find SQL statement to include with refid 'com.newwebla.user.mapper.RoleMapper.Base_Column_List'

在这里插入图片描述
这里其实是发现了一个很基础的错误,可以从日志的提示看出来错误的地方
‘com.newwebla.user.mapper.RoleMapper.Base_Column_List’
进入这个 RoleMapper.xml文件中可以找到没有Base_Column_List
在这里插入图片描述

少了这个,解决方法加上所要查询的字段,或者直接去掉填写所要查询的字段就好了。
在这里插入图片描述

### MyBatisPlus 的 Mapper.xml 文件标准模板 以下是基于提供的引用以及 MyBatis Plus 使用的最佳实践所整理的一个完整的 `Mapper.xml` 文件模板示例: #### XML 命名空间与配置 在 MyBatis 中,`Mapper.xml` 需要指定命名空间 (namespace),通常该命名空间应与对应的 Mapper 接口全限定类名一致[^1]。 ```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"> <!-- SQL 片段 --> <sql id="Base_Column_List"> id, wx_nick_name, email, phone_number, create_time, update_time </sql> <!-- 查询语句 --> <select id="selectByName" resultType="com.example.entity.User"> SELECT <include refid="Base_Column_List"/> FROM user WHERE wx_nick_name = #{wxNickName} </select> <!-- 插入语句 --> <insert id="insertUser" parameterType="com.example.entity.User"> INSERT INTO user(wx_nick_name, email, phone_number, create_time) VALUES(#{wxNickName}, #{email}, #{phoneNumber}, NOW()) </insert> <!-- 更新语句 --> <update id="updateUserById" parameterType="com.example.entity.User"> UPDATE user SET wx_nick_name = #{wxNickName}, email = #{email}, phone_number = #{phoneNumber}, update_time = NOW() WHERE id = #{id} </update> <!-- 删除语句 --> <delete id="deleteUserById"> DELETE FROM user WHERE id = #{id} </delete> </mapper> ``` --- #### 关键点解析 1. **命名空间设置** - `<mapper>` 标签的 `namespace` 属性需匹配对应的 Mapper 接口全限定名称。例如,在上述例子中,`UserMapper` 对应的是 `com.example.mapper.UserMapper` 类。 2. **SQL 片段复用** - 可通过 `<sql>` 定义可复用的 SQL 片段,并使用 `<include>` 引用这些片段。这有助于减少重复代码并提高维护效率[^4]。 3. **参数绑定** - 如果接口方法只有一个参数,则可以直接通过 `#{}` 绑定;如果存在多个参数,则需要借助 `@Param` 注解为参数起别名,并在 XML 中通过 `${}` 或 `#{}` 进行引用。 4. **ResultMap 映射** - 若返回对象较为复杂(嵌套属性或其他映射关系),可以定义 `<resultMap>` 来实现字段到 Java 实体类属性的一一映射[^3]。 --- #### Spring Boot 整合注意事项 当使用 Spring Boot 和 MyBatis Plus 时,可以通过如下方式加载自定义的 `Mapper.xml` 文件: - 在 `application.yml` 或 `application.properties` 中配置 `mapperLocations` 参数,指向资源目录下的 `.xml` 文件位置[^2]。 ```yaml mybatis-plus: mapper-locations: classpath:mappers/*.xml ``` 或者手动注册 Bean 并指定路径: ```java @Bean public MybatisSqlSessionFactoryBean sqlSessionFactory() { MybatisSqlSessionFactoryBean factoryBean = new MybatisSqlSessionFactoryBean(); factoryBean.setConfigLocation(new ClassPathResource("mybatis-config.xml")); factoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mappers/*.xml")); return factoryBean; } ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值