`

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提供了多种解决方案,包括使用`&lt;resultMap&gt;`、在SQL语句中直接调整列名,以及使用注解。通过学习源代码,我们可以掌握这些方法,提升在实际项目中的应用能力。

    java实体类字段自定义-数据库字段和程序实体类属性不一致解决方案.docx

    Java 实体类字段自定义-数据库字段和程序实体类属性不一致解决方案 Java 实体类字段自定义是指在 Java 开发中,实体类的字段与数据库表的字段不一致的问题。这种情况下,需要实现实体类字段的自定义,以便与数据库...

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

    总结来说,解决MyBatis字段名与实体类属性名不匹配的问题主要依赖于别名配置、ResultMap、注解以及自动映射策略。根据项目的具体需求和结构,可以选择最合适的解决方案。记得在使用这些方法时,确保MyBatis的配置...

    mybatis sql学习

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

    mybatis实体类自动生成工具

    3. **注解**:如`@Table`表示实体类所对应的数据库表名,`@Id`标记主键字段,`@Column`定义字段名等。如果是MyBatis Plus,可能会使用`@Data`、`@Accessors`等来简化代码。 除了实体类,该工具可能还会自动生成...

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

    在MyBatis中,我们经常遇到实体类(Entity Class)中的属性名与数据库表中的字段名不一致的情况。这种情况通常是由于编程习惯、命名规范或为了提高代码可读性导致的。MyBatis提供了多种方式来解决这个问题,确保实体...

    pgsql中使用mybatis生成实体类

    在pgsql环境下,MBG会读取表结构,生成对应的实体类,其中字段对应表中的列,属性名通常会转换为驼峰命名。 6. **使用生成的实体类**:生成的实体类可以直接在你的业务逻辑中使用,它们包含了getter和setter方法,...

    MyBatis表字段名与实体属性名不一致-src.zip

    在使用MyBatis框架进行Java开发时,常常会遇到数据库表字段名与实体类属性名不一致的情况。这种情况通常是因为数据库设计规范与编程语言的命名习惯不同,或者是为了避免SQL注入等问题而采取的措施。本压缩包文件...

    mybatis自动生成实体类

    在MyBatis中,实体类是与数据库表对应的Java对象,用于存储和操作数据库中的数据。本文将详细介绍如何使用MyBatis的代码生成器(Generator)来自动生成实体类,以及相关的配置和使用步骤。 首先,我们需要在项目中...

    mybatis自动生成实体类映射

    在MyBatis中,实体类通常包含与数据库表列一一对应的属性,并且每个属性都有对应的getter和setter方法。例如,如果有一个名为`users`的表,包含`id`、`username`和`password`等字段,那么对应的实体类可能是这样的:...

    mybatis反向生成实体类

    - **实体类(Entity)**:每个数据库表会对应一个实体类,包含了表中的字段及其属性,方便进行对象-关系映射。 - **DAO接口(Mapper)**:提供CRUD(Create, Read, Update, Delete)等基本操作的接口。 - **XML...

    mybatis自动生成Java实体类和映射文件的自动生成类工具

    2. **获取表信息**:连接成功后,工具会查询数据库中的表信息,包括表名、字段名、字段类型等。 3. **生成实体类**:根据表的字段信息,工具会自动生成对应的Java实体类,每个字段对应类的一个属性,字段类型则转化...

    mybatis逆向生成实体类工具

    标题 "mybatis逆向生成实体类工具" 涉及的是MyBatis框架中的一个实用功能,即通过配置文件`generatorConfig.xml`自动生成与数据库表对应的Java实体类、Mapper接口以及XML映射文件。这一过程通常被称为逆向工程,能够...

    mybatis逆向工程(通过数据库生成java实体类)

    2. `javaModelGenerator`:配置生成实体类的相关参数,如目标包名、目标源文件目录等。 3. `sqlMapGenerator`:设置生成Mapper XML文件的位置。 4. `javaClientGenerator`:定义Mapper接口生成的细节,如接口的访问...

    SpringBoot +Mybatis xml方式配置SQL Demo源码下载 修改数据库字段与实体类含有下滑线不对应问题

    在本示例中,我们将深入探讨如何在SpringBoot项目中结合Mybatis进行XML方式的SQL配置,并解决数据库字段与实体类中的字段名不匹配的问题,特别是涉及到含有下划线的情况。SpringBoot以其简洁的配置和强大的整合能力...

    mybatis代码生成器,Java实体类生成器

    4. **MySQL数据库字段映射**:MyBatis代码生成器可以识别MySQL数据库的表结构,包括字段名、数据类型、主键等信息,并将其转化为Java实体类的属性和XML文件中的结果映射。这样,数据库字段的变化可以直接反映到Java...

    mybatis自动生成xml,mapper,实体类文件工具

    生成的实体类(Entity)对应数据库中的表,包含了字段和getter/setter方法;Mapper接口则提供了CRUD操作的方法声明;XML映射文件则包含具体的SQL语句,与Mapper接口一一对应。 这样的工具在实际开发中非常有用,...

    mybatis3.28教程

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

    用于mybatis生成实体类以及dao

    在 MyBatis 中,实体类的属性对应于表的列,属性的 getter 和 setter 方法则对应于 SQL 查询中的字段。为了自动创建这些实体类,你可以使用一些代码生成工具,如 MyBatis Generator 或 IntelliJ IDEA 等 IDE 插件。 ...

    Mybatis相关代码

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

Global site tag (gtag.js) - Google Analytics