您的位置:首页 > 数据库

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

2018-01-15 21:56 399 查看
数据库字段名称与实体类属性不一致的处理措施
解决方案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">

selec
915c
t* from t_student

</select>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐