`

MyBatis学习2之解决字段名与实体类属性名不相同的冲突

阅读更多

      在mybatis学习第一篇博客中,虽然有查询结果,但是查出的属性与表中属性不对应,这种情况相信大家在使用jstl、stuts标签时也遇到过类似情况,如果把t_group表中group_name属性修改为groupName时,结果此属性能正确查询出来。但是这样修改直接动了表的结构,不建议采纳。

以下有两种方法:

1、通过在查询的sql语句中定义字段名的别名,让字段名的别名和实体类的属性名一致,这样就可以表的字段名和实体类的属性名一一对应上了,这种方式是通过在sql语句中定义别名来解决字段名和属性名的映射关系的。

   修改sql映射文件GroupMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zlt.mybatis.model.Group">
	<!-- group_name属性查出来为null -->
	<!--  
	<select id="selectGroupByID" parameterType="int" resultType="Group" >
		select t.id,t.group_name,t.description from t_group t where t.id = #{id}
	</select>
	-->
	<!-- 能正确查询出group_name属性 -->
	<select id="selectGroupByID" parameterType="int" resultType="Group" >
		select t.id id,t.group_name groupName,t.description description from t_group t where t.id = #{id}
	</select>
</mapper>

   运行结果:

2、通过<resultMap>来映射字段名和实体类属性名的一一对应关系。这种方式是使用MyBatis提供的解决方式来解决字段名和属性名的映射关系的。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zlt.mybatis.model.Group">
	<!-- group_name属性查出来为null -->
	<!--  
	<select id="selectGroupByID" parameterType="int" resultType="Group" >
		select t.id,t.group_name,t.description from t_group t where t.id = #{id}
	</select>
	-->
	<!-- 能正确查询出group_name属性 -->
	<!-- <select id="selectGroupByID" parameterType="int" resultType="Group" >
		select t.id id,t.group_name groupName,t.description description from t_group t where t.id = #{id}
	</select> -->
	
	
	<!-- 使用resultMap能正确查询出group_name属性 -->
	 <select id="selectGroupByID" parameterType="int" resultMap="groupResultMap" >
		select t.id id,t.group_name groupName,t.description description from t_group t where t.id = #{id}
	</select>
	 <!--通过<resultMap>映射实体类属性名和表的字段名对应关系 -->
	<resultMap type="com.zlt.mybatis.model.Group" id="groupResultMap">
		<!-- 用id属性来映射主键字段 -->
		<id property="id" column="id" />
		 <!-- 用result属性来映射非主键字段 -->
		<result property="groupName" column="group_name"/>
	    <result  property="description" column="description" />
	</resultMap>
</mapper>

 运行结果:

 

  • 大小: 6.5 KB
分享到:
评论

相关推荐

    MyBatis--解决字段名与实体类属性名不相同的冲突--源代码

    在平时的开发中,我们表中的字段名和表对应实体类的属性名称不一定都是完全相同的,下面来演示一下这种情况下的如何解决字段名与实体类属性名不相同的冲突,下载源代码调试、分析,学习

    MyBatis学习教程(四)-如何快速解决字段名与实体类属性名不相同的冲突问题

    我们经常会遇到表中的字段名和表对应实体类的属性名称不一定都是完全相同的情况,如何解决呢?下面脚本之家小编给大家介绍MyBatis学习教程(四)-如何快速解决字段名与实体类属性名不相同的冲突问题,一起学习吧

    mybatis sql学习

    MyBatis学习总结(四)——解决字段名与实体类属性名不相同的冲突  在平时的开发中,我们表中的字段名和表对应实体类的属性名称不一定都是完全相同的,下面来演示一下这种情况下的如何解决字段名与实体类属性名不...

    05.MyBatis中当实体类中的属性名和表中的字段名不一样怎么办 ?.zip

    05.MyBatis中当实体类中的属性名和表中的字段名不一样怎么办 ?

    Mybatis实体类和表映射问题(推荐)

    在项目开发中我们经常会遇到表中的字段名和表对应实体类...下面小编给大家介绍下这种情况下如何解决字段名与实体类属性名不相同的冲突问题。下面小编给大家带来了Mybatis实体类和表映射的解决方法,小伙伴们一起学习吧

    mybatis3.28教程

    5.mybatis解决字段名与实体类属性名不相同的冲突 6.mybatis一对一关联、一对多关联 7.mybatis动态SQL与模糊查询实现 8.mybatis调用存储过程 9.mybatis缓存(一级缓存、二级缓存) 10.spring集成mybatis

    Mybatis相关代码

    1.mybatis快速入门 2.使用mybatis对表执行CRUD操作 3.优化mybatis配置文件中的配置 4.解决字段名与实体类属性名不相同的冲突 5.实现关联表查询 6.调用存储过程 7.mybatis缓存 8.mybatis 3.x与Spring 4.X整合

    MyBatis快速入门(六):解决字段名和属性名不配置问题

    在实际开发中有时候会遇到数据库表中的字段名与实体类中的属性名不一致的情况,例如,我们修改User类如下,但是不改动数据库表中的字段 package com.zfnotes.beans; import java.util.Date; public class User { ...

    MyBatis_Course:MyBatis 适合初学者学习

    v0.6 - 解决字段名与实体类属性名不相同的冲突 v0.7 - MyBatis中使用association标签来解决一对一的关联查询 v0.8 - MyBatis中使用collection标签来解决一对多的关联查询 v0.9 - 调用存储过程 v1.0 - Mybatis一级...

    day01_eesy_01mybatis.zip

    实体类中的属性和数据库表的字段名称保持一致 user User id id user_name user_name 5.mybatis的入门 mybatis的环境搭建 第一步:创建maven工程并导入坐标 第二步:创建实体类和dao接口 第三步...

    jack838347563#interview#MyBatis最新面试题,2021年面试题及答案汇总1

    2、当实体类中的属性名和表中的字段名不一样 ,怎么办 3、Mybatis是如何将sql执行结果封装为目标对象并返回的 4、当实体类中的属性名和表中的字段名不一

    Unknown column ” in ‘field list’解决方案

    1,检查数据库中的字段名与实体类中的字段名是否一致,特别要注意单词字母 2,检查数据库中的字段是否与实体类中的字段一致。比如数据库中没有该字段,实体类中出现了就会报这个错 经过调式发现,问题可能出在数据库...

    1000道 互联网Java架构师面试题.pdf和JAVA核心知识整理.zip

    7、当实体类中的属性名和表中的字段名不一样 ,怎么办 ? 8、 模糊查询 like 语句该怎么写? 9、通常一个 Xml 映射文件,都会写一个 Dao 接口与之对应,请问,这个 Dao 接口的工作原理是什么?Dao 接口里的方法,...

    java mysql代码自动生成工具(dao接口 , xml , model)

    使用步骤: 1.下载解压后 只需修改generator.xml配置文件中的 库表信息 ...2.数据库字段命名建议规范(全大写 多词之间用 '_' 隔开),这样实体类中的属性名会生成驼峰形式的(当然字段名不按规范 也无所谓 也可以用 )

    mybatis-generator-gui-extension:图形化MBG,内置丰富插件,可生成Service、Controller、View,配置简单。 A powerful GUI tool for MyBatisGenerator(MBG)

    自动包裹关键字:对于表名/字段名为关键字的情况,可指定用 ` 或其他字符串包裹,防止冲突 实体类增强 rootClass(可选):可为实体对象指定RootClass trim(可选):为String类型的setter添加trim 使用真实列名(可选):...

    软件系统设计方案.pdf

    当模型的状态发⽣改变时,模 型会通知与之相关的视图进⾏更新。 ⼆、项⽬视图 ⼆、项⽬视图 1、分解视图 、分解视图 分解是构建软件架构模型的关键步骤,分解视图也是描述软件架构模型的关键视图,⼀般分解视图呈现...

    JAVA毕业设计之springboot014校园管理系统的设计与实现(springboot+mysql)完整源码.zip

    entity:负责定义实体类;util:负责工具类的存放;static:负责存放静态资源,如CSS、JS等。数据库设计:本项目包含以下表:student:学生表,包含学号、姓名、性别等字段;teacher:教师表,包含工号、姓名、性别...

Global site tag (gtag.js) - Google Analytics