数据库字段名称与实体类属性不一致的处理措施
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>
解决方案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>
相关文章推荐
- Mybatis高级映射之-数据库字段跟实体类名称不一致时的处理
- Mybatis属性和数据库表字段不一致处理
- 表字段名和实体类属性名不一致的处理
- Mybatis实体类属性与数据库字段不一致解决办法
- MyBatis学习笔记-03.MyBatis中五种成功映射数据库字段与实体类属性不一致的解决方案
- Gson解析之字段名和实体类属性名不一致的处理
- 在写mapper接口时,遇到数据库字段与实体类字段名称不一致时
- 在Mybatis中,解决数据库字段名与java实体类属性名不一致的三种方式
- MyBatis系列二 之 数据库列名于程序实体类中字段名称不一致
- jQuery easyui dataGrid 动态改变排序字段名,一般情况下,在使用的时候,我们会点击相应字段进行排序,这里以JAVA为例,后端的实体类字段有可能和数据库的字段不一致; 如:实体类中的
- php 处理字段与数据库字段顺序不一致的 csv 文件
- mybatis框架下解决数据库中表的列的字段名和实体类属性不相同的问题
- YbSoftwareFactory 代码生成插件【十九】:实体类配合数据库表字段进行属性扩展的小技巧
- MyBatis入门实例-包括实体类与数据库字段对应&CLOB字段处理
- 查询出的数据记录字段要与实体类中的属性名一致
- Mybatis总结(3)--之数据库字段名和实体类属性名不一致
- mybatis框架下解决数据库中表的列的字段名和实体类属性不相同的问题
- spring data jpa 框架在实体类中添加非数据库字段的属性
- 数据库与JavaBean字段名不一致处理
- KO ------- 表中字段名和实体类属性名不一致