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

当查询结果的列名和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>

猜你喜欢

转载自blog.csdn.net/heliuerya/article/details/131299340