数据库中的字段名与实体类中的属性名不能一一对应时的三种处理方式

当查询结果的列名和java对象的属性名对应不上时需要采用下列方式进行处理:

        第一种方式:在查询语句中使用关键字"as" 给列起别名

        第二种方式:使用resultMap结果映射

        第三种方式:开启驼峰命名自动映射(配置settings)

实体类Car:

package com.bjpowernode.domain;

public class Car {

    private Integer id;

    private String carNum;

    private String brand;

    private Double guidePrice;

    private String produceTime;

    private String carType;

//构造方法略

//setter and getter 略

//toString略

数据库中的t_car表:

我们可以看出实体类中的属性名与数据库表中的字段名并不完全一样,需要进行处理,三种处理方式如下:

第一种方式:在查询语句中使用关键字"as" 给列起别名所起的别名需要是实体类的属性名

<select id="selectById" resultType="com.powernode.mybatis.pojo.Car">

        select

            id,

            car_num as carNum,

            brand,

            guide_price as guidePrice,

            produce_time as produceTime,

            car_type as carType

        from

            t_car

        where

            id = #{id}

    </select>

第二种方式:采用resultMap结果映射,具体如下:

<!--

 resultMap:

       id:是这个结果映射的唯一标识,

       type:结果集要映射的类(也就是对应的实体类)。可以使用别名。

-->

<resultMap id="carResultMap" type="car">

         <!--id是对象的唯标识,为了提mybatis的性能。建议写上。-->

         <id property="id" column="id"/>

         <result property="carNum" column="car_num"/>

         <!--当属性名和数据库列名一致时,可以省略。但建议都写上。-->

         <!--javaType用来指定属性类型。jdbcType用来指定列类型。一般可以省略。-->

         <result property="brand" column="brand" javaType="string" jdbcType="VARCHAR"/>

         <result property="guidePrice" column="guide_price"/>

         <result property="produceTime" column="produce_time"/>

         <result property="carType" column="car_type"/>

</resultMap>

<!--resultMap属性的值必须和resultMap标签中id属性值一致。-->

<select id="selectAllByResultMap" resultMap="carResultMap">

        select * from t_car

</select>

第三种方式:开启驼峰命名自动映射(配置settings)

使用这种方式的前提是:

        属性名遵循Java的命名规范,数据库表的列名遵循SQL的命名规范。

Java命名规范:

        首字母大写,后面每个单词首字母大写,遵循驼峰命名规范。

SQL命名规范:

        全部小写,单词之间采用下划线分割。

比如以下的对应关系:

        实体类中的属性名                             数据库表的列名

                carNum                                         car_num

                carType                                         car_type

                produceTime                                 produce_time

启用该功能,需要在mybatis-config.xml文件中进行如下配置:

<!--放在properties标签后-->

<settings>

       <setting name="mapUnderscoreToCamelCase" value="true"/>

</settings>

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值