数据库字段名称与实体类属性不一致的处理措施


数据库字段名称与实体类属性不一致的处理措施

解决方案1

 设定显示列的别名,让显示列的别名与实体类的属性名相同

 优点: 操作简单,容易理解

 缺点: 当这样的语句出现的次数过多的时候,到时冗余代码增多,这些别名不能重用

 适用场景: 语句出现较少的查询时列较少的时候

 -->

<selectid="selectStudentAll1" resultType="stu">

selectid ,name stuName ,age stuAge from t_student

</select>

 

<!--

  解决方案2

 使用resultMap自定义封装规则

 优点: 这个封装规则可以被重复的使用,解决解决方案1的缺点

 缺点: 需要额外定义一个封装对象并对它进行维护

 适用场景: 语句出现次数较多大于等于2次 字段较多的时候

 -->

 <!-- 自定义结果封装规则

         属性

         type  用于指定将结果集 封装到哪个实体类中,取值为类的全限定名或在主配置文件中定义的别名

         id    这个自定义规则的唯一标识,不能与其他的resultMap相同,用语给select标签中的resultMap属性引用

 -->

 <resultMap type="stu"id="stuMap">

 <!--

                 用于主键列数据映射

           属性

           column 指定结果集中的显示列的列名

           property 指定 resultMap标签中type所指定的这个实体类中的属性名

         MyBatis会将column所指定的这个列的数据,设置到propety所指定的这个属性中

  -->

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

         <!--普通列数据映射 -->

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

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

 </resultMap>

<selectid="selectStudentAll2" resultMap="stuMap">

select* from t_student

</select>

<!--

 解决方案3

 使用Map集合封装结果集中的数据,MyBatis会使用显示列的名字作为Map集合的key,使用显示列所对应的数据,作为Map集合的value

 将每一条数据分别封装到不同的Map集合中

 优点: 简单,可以重复使用,又无需额外维护封装规则

 缺点: 破坏了ORM的映射规则

 适用场景: 进行多表查询时,注意:多个表中的可能会出现相同的列名,这样不会导致错误但是会导致Map集合中的数据不准确

 -->

<selectid="selectStudentAll3" resultType="map">

select* from t_student

</select>

        用as关键字声明别名

1
select 字段1 as 字段1别名,字段2 as 字段2别名 from 表名 as 表别名

 


---------------------
作者:haokinglong_java
来源:CSDN
原文:https://blog.csdn.net/hjl021/article/details/79069276
版权声明:本文为博主原创文章,转载请附上博文链接!

posted @ 2018-12-09 19:23  纳兰容若♫  阅读(1441)  评论(0编辑  收藏  举报