Mybatis解决属性名和字段名不一致的问题

    科技2022-08-12  95

    lyz的自学笔记

    文章目录

    一、问题分析二、解决方法1、起别名2、结果映射(resultMap)


    一、问题分析

    如果数据库中的字段名和我们自己写的实体类中的属性名不一致的情况下,会出现什么问题呢? 例如: 数据库中的字段 实体类中的属性名

    结果是不管是增删改查,如果不做特殊处理,程序也不会报错,但是实体类中属性名与数据库表中的字段名是无效的 例:查询数据库表中全部信息 映射文件中的代码

    <select id="getUserList" resultType="com.lyz.bean.User"> SELECT * from mybatis.user </select>

    实际上SQL语句是这样的

    select id,name,password from mybatis.user

    但是我们的数据库表中没有password这个字段名,所以返回的值就是为null

    示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

    二、解决方法

    1、起别名

    <select id="getUserList" resultType="com.lyz.bean.User"> SELECT id,name,pwd as password from mybatis.user </select>

    2、结果映射(resultMap)

    <!-- 结果集映射--> <resultMap id="UserMap" type="com.lyz.bean.User"> <!-- column数据库中的字段,property实体类中的属性 --> <!-- <result column="id" property="id" />--> <!-- <result column="name" property="name" />--> <result column="pwd" property="password" /> </resultMap> <!-- 查询所有的用户--> <select id="getUserList" resultMap="UserMap"> SELECT id,name,pwd from mybatis.user </select> resultMap元素是Mybatis中最强大的元素resultMap的设计思想是,对于简单的语句根本不需要配置显示的结果映射,而对一些复杂的语句只需要描述它们的关系就行了ResultMap最优秀的地方在于,如果数据库的字段名与实体类的属性一致,根本就不需要显式地用到它们
    Processed: 0.014, SQL: 8