数据库字段名称与实体类属性不一致的处理措施
数据库字段名称与实体类属性不一致的处理措施
解决方案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
版权声明:本文为博主原创文章,转载请附上博文链接!