使用resultMap出现的问题

一、使用resultMap的相关代码

1)实体类映射文件

<!-- 这是书写SQL语句的文件xml,也叫实体类映射文件 -->
<resultMap id="bookMap" type="book">
        <result column="bname" property="bookName" />
    </resultMap>
    <select id="selectById2" parameterType="book" resultMap="bookMap" resultType="cn.mall.entity.Book">
        select * from book where id = #{id}
    </select>

2)Mapper层(dao)实现接口

public Book selectById2(int id) ;

3)测试类测试方法(APP)

// 根据id查询数据
    @Test
    public void selectById2(){
        //获取session
        SqlSession session = sessionFactory.openSession();
        //获取mapper接口的代理对象
        BookMapper bookMapper = session.getMapper(BookMapper.class);
        //调用代理对象方法
        Book book = bookMapper.selectById2(9);
        System.out.println(book);
        //关闭session
        session.close();
    }

二、后台console打印报错信息

### Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: 
org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. The XML location is 'mappers/BookMapper.xml'.
 Cause: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.
TypeException: Could not resolve type alias 'book'.  
Cause: java.lang.ClassNotFoundException: Cannot find class: book

请添加图片描述

三、解决该问题

1)在配置文件SqlMapConfig.xml中没有添加类型别名typeAliases标签

2)添加typeAliases标签

    <!--要实现resultMap映射,需要添加包路径-->
    <typeAliases>
        <package name="cn.mall.entity"/>
    </typeAliases>

3)SqlMapConfig.xml代码

<?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>
    <!--要实现resultMap映射,需要添加包路径-->
    <typeAliases>
        <package name="cn.mall.entity"/>
    </typeAliases>
    <!-- 和spring整合后 environments配置将废除-->
    <environments default="development">
        <environment id="development">
            <!-- 使用jdbc事务管理-->
            <transactionManager type="JDBC" />
            <!-- 数据库连接池-->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://localhost:3306/mall?useUnicode=true&amp;characterEncoding=utf8&amp;useSSL=false&amp;serverTimezone=UTC" />
                <property name="username" value="root" />
                <property name="password" value="123" />
            </dataSource>
        </environment>
    </environments>
    
    <mappers>
        <mapper resource="mappers/BookMapper.xml"/>
    </mappers>
</configuration>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Mybatis是一款基于Java的开源持久化框架,可以方便地将数据库中的数据映射到Java对象中。而ResultMap则是Mybatis中非常重要的功能之一,它可以将SQL查询结果映射到Java对象的属性中,从而简化开发人员的工作,提高开发效率。 然而,有时候我们在使用Mybatis的ResultMap时会遇到一些问题,可能是因为我们对ResultMap的理解不够深入,或者是ResultMap本身存在一些缺陷导致的。 首先是与映射的数据类型有关的问题。对于一些复杂的数据类型,如集合类型、嵌套对象等,Mybatis的ResultMap可能无法完美地进行数据映射,需要开发人员另外进行手动操作,这就增加了开发的难度和工作量。 其次是与SQL语句的复杂性有关的问题。如果我们的SQL语句过于复杂,包含多个表的关联查询、各种聚合函数、分组等,那么ResultMap映射数据时可能存在一些问题,影响程序的性能和正确性。 最后是与ResultMap自身的特性有关的问题。在使用ResultMap时,开发人员需要手动编写映射规则,这就需要比较熟练的Java编程和SQL语句设计能力。而且如果ResultMap定义错误,可能会导致运行时出现各种错误,这就需要开发人员花费大量的时间进行调试和修正。 综上所述,虽然Mybatis的ResultMap是一款非常实用的功能,但也存在一些局限性和不足之处,需要开发人员结合实际情况进行合理的使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ztw9528

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值