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

这篇具有很好参考价值的文章主要介绍了数据库中的字段名与实体类中的属性名不能一一对应时的三种处理方式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

当查询结果的列名和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>文章来源地址https://www.toymoban.com/news/detail-494719.html

到了这里,关于数据库中的字段名与实体类中的属性名不能一一对应时的三种处理方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包