MyBatis实体类属性名与数据库字段名不同的解决方案

在使用MyBatis的使用,应该注意实体类的属性名尽量和表的字段名尽量相同,如果不同将会导致MyBatis无法完成数据的封装,但是在软件开发过程中,数据库的创建和软件环境的搭建不可能是同一个人,实体类属性名和数据库的字段名不同那就在所难免,那么我们现在提供三种解决方案解决这个问题

1)  给数据字段起别名

为查询语句的显示列定义别名,让这个别名与实体类的属性名相同完成自动封装

 缺点: 1.如果列数过多会导致语句难以阅读

  2.如果查询语句的定义多个,会导致重复代码增多,多次定义显示列增加了工作量

         <selectid="selectStudentAll2" resultType="Student">

           select id stuId,name stuName,agestuAge from student

</select>

2使用esultMap 手动配置一个数据结果的封装规则

<!--

                     resultMap 手动配置一个数据结果的封装规则

                    属性

                     type 用于指定将数据的返回结果封装到哪个实体类中

                     id   这个封装规则的唯一标识,用于被查询标签中的resultMap所引用

          -->

         <resultMaptype="Student" id="stuMap">

            <!-- 用于专门封装主键的column指定的id设置到property指定stuId属性中这个属性来自于 resultMaptype属性指定的Student -->

                   <idcolumn="id" property="stuId"/>

                  <!--基本属性封装  column指定的name设置到property指定stuName属性中这个属性来自于resultMaptype属性指定的Student-->

                   <resultcolumn="name" property="stuName"/>

                   <resultcolumn="age" property="stuAge"/>

         </resultMap>

         <!--

                   属性

                    resultMap 用于指定某个自定义的封装规则,MyBatis会根据这个自定义的封装规则进行数据封装(单条记录)

                   优点:1.这个自定义的封装规则可以被重复使用,省去多次定义别名的问题

                   缺点:1.需要额外定义一套封装规则的resultMap

          -->

         <selectid="selectStudentAll3" resultMap="stuMap">

                   select* from student

         </select>

3)使用resultType属性并指定返回结果为一个map集合

         <!--

使用resultType属性并指定返回结果为一个map集合

这时MyBatis会将显示列作为Map即可key显示列对应的值为Map集合的value,将每条记录封装到不同的Map集合中,最后将Map集合添加到List集中进行返回每一个Map集合对应着一条记录

           优点:简单方便快捷

            缺点:破坏了ORM的映射关系

          -->

         <selectid="selectStudentAll" resultType="map">

                   select* from student

         </select>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值