spring-mybatis整合 invalid bound statement (not found): com.bjpowernode.mapper.UsersMapper.insert 解决方案

文章讲述了在Java项目中使用MyBatis时,如何解决UsersMapper.xml映射文件未被扫描的问题,通过在pom.xml中添加资源配置,确保XML文件被Maven编译时包含进来,从而解决绑定异常。

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

Users类

public interface UsersMapper {
    int insert(Users users);
}

映射文件:UsersMapper.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.bjpowernode.mapper.UsersMapper">
    <insert id="insert" parameterType="users" >
        insert into users values (#{userid}, #{username}, #{upass})
    </insert>
</mapper>

服务层接口:UsersService

public interface UsersService {
    //增加用户
    int insert(Users users);
}

服务层实现类:UsersServiceImpl

@Service
public class UsersServiceImpl implements UsersService {
    @Autowired
    UsersMapper usersMapper;
    @Autowired
    AccountsService accountsService;
    @Override
    public int insert(Users users) {
        int num = usersMapper.insert(users);
        System.out.println("用户增加成功!num="+num);
        return num;
    }
}

测试:

 @Test
    public void testUsers(){
        ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext_service.xml");
        UsersService uService = (UsersService) ac.getBean("usersServiceImpl");
        int num = uService.insert(new Users(101,"张三","123"));
        System.out.println(num);
    }

报错:
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.bjpowernode.mapper.UsersMapper.insert在这里插入图片描述
问题:
src/main/java目录下的mapper资源文件(UsersMapper.xml)没有被扫描到。

解决方案:
在pom.xml文件中配置如下内容:

    <build>
        <!-- 目的是把src/main/java目录中的xml文件包含到输出结果中。输出到classes目录中 -->
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <!-- 所在的目录 -->
                <includes>
                    <!-- 包括目录下的.properties,.xml 文件都会扫描到 -->
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <!-- 所在的目录 -->
                <includes>
                    <!-- 包括目录下的.properties,.xml 文件都会扫描到 -->
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
            </resource>
        </resources>
    </build>

修改完后,用Maven clean→compile,再次测试:
成功!
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值