javaEE排错

文章讲述了作者在使用MyBatis时遇到控制台报错,原因是Mapper文件中的两个`id`标签未保持唯一性。通过修改重复的`id`并修复XML结构,问题得以解决,确保了代码正常运行。
摘要由CSDN通过智能技术生成

1.控制台报错

org.apache.ibatis.exceptions.PersistenceException: 
### Error building SqlSession.
### The error may exist in mapper/UsersMapper.xml
### The error occurred while processing mapper_resultMap[stuMap]
我查看了我的代码

<?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应匹配对应的Mapper接口的全类名 -->
<mapper namespace="mybatis0506.mapper.UsersMapper">

    <!-- 插入语句,parameterType指定参数类型,应与Users类的完整包名对应,且前面不应有空格 -->
    <insert id="addUser" parameterType="mybatis0506.pojo.Users">
        insert into users(uname, uage) VALUES (#{uname},#{uage})
    </insert>

    <!-- 查询语句,resultType指定返回类型,应与Users类的完整包名对应,且前面不应有空格 -->
    <select id="findAllUser" resultType="mybatis0506.pojo.Users">
        select * from users order by uid desc
    </select>
    <update id="updateUsers" parameterType="mybatis0506.pojo.Users">
        update users set uname = #{uname},uage=#{uage}
        where uid = #{uid}
    </update>
    <select id="findUsersByID" parameterType="int"
            resultType="mybatis0506.pojo.Users">
        select * from users where uid=#{uid}
    </select>
<!--    我的更新语句-->
    <update id="updateUsers" parameterType="mybatis0506.pojo.Users">
        update t_student set sname=#{name},sage=#{age}
        where sname=#{name}
    </update>

</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">-->
<!--&lt;!&ndash; mapper为映射的根节点&ndash;&gt;-->
<!--&lt;!&ndash; mapper为映射的根节点,namespace指定Dao接口的完整类名-->
<!--mybatis会依据这个接口动态创建一个实现类去实现这个接口,-->
<!--而这个实现类是一个Mapper对象&ndash;&gt;-->
<!--<mapper namespace="mybatis0506.mapper.UsersMapper">-->
<!--<insert id="addUser" parameterType=" mybatis0506.pojo.Users">-->
<!--    insert into users( uname, uage) VALUES (#{uname},#{uage})-->
<!--</insert>-->
<!--<select id="findAllUser"-->
<!--        -->
<!--        resultType="mybatis0506.pojo.Users">-->
<!--    select * from users order by uid desc-->
<!--</select>-->
<!--</mapper>-->

发现我有两个id写成一样的了,此处不允许一样的违背了MyBatis 中每个映射语句的 id 必须唯一的规则(进行修改,将第二个id变成UserStudent)

<?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应匹配对应的Mapper接口的全类名 -->
<mapper namespace="mybatis0506.mapper.UsersMapper">

    <!-- 插入语句,parameterType指定参数类型,应与Users类的完整包名对应,且前面不应有空格 -->
    <insert id="addUser" parameterType="mybatis0506.pojo.Users">
        insert into users(uname, uage) VALUES (#{uname},#{uage})
    </insert>

    <!-- 查询语句,resultType指定返回类型,应与Users类的完整包名对应,且前面不应有空格 -->
    <select id="findAllUser" resultType="mybatis0506.pojo.Users">
        select * from users order by uid desc
    </select>
    <update id="updateUsers" parameterType="mybatis0506.pojo.Users">
        update users set uname = #{uname},uage=#{uage}
        where uid = #{uid}
    </update>
    <select id="findUsersByID" parameterType="int"
            resultType="mybatis0506.pojo.Users">
        select * from users where uid=#{uid}
    </select>
<!--    我的更新语句-->
    <update id="updateStudent" parameterType="mybatis0506.pojo.Users">
        update t_student set sname=#{name},sage=#{age}
        where sname=#{name}
    </update>

</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">-->
<!--&lt;!&ndash; mapper为映射的根节点&ndash;&gt;-->
<!--&lt;!&ndash; mapper为映射的根节点,namespace指定Dao接口的完整类名-->
<!--mybatis会依据这个接口动态创建一个实现类去实现这个接口,-->
<!--而这个实现类是一个Mapper对象&ndash;&gt;-->
<!--<mapper namespace="mybatis0506.mapper.UsersMapper">-->
<!--<insert id="addUser" parameterType=" mybatis0506.pojo.Users">-->
<!--    insert into users( uname, uage) VALUES (#{uname},#{uage})-->
<!--</insert>-->
<!--<select id="findAllUser"-->
<!--        -->
<!--        resultType="mybatis0506.pojo.Users">-->
<!--    select * from users order by uid desc-->
<!--</select>-->
<!--</mapper>-->

代码正常输出,不报错。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值