`

Mybatis中实体类属性和数据列之间映射的四种办法

 
阅读更多

Mybatis不像Hibernate中那么自动化,通过@Column注解或者直接使用实体类的属性名作为数据列名,而是需要自己指定实体类属性和 
数据表中列名之间的映射关系,这一点让用惯了Hibernate的人很不习惯,所幸经过探索找到了建立映射关系的三种办法,其中总也有比较 
简单的。

首先先定义一个实体类,如下:

public class User implements Serializable {
    private Integer userId;
    private String userName;
    ......
}

1.通过XML映射文件中的resultMap这种方式是最常见的,类似如下:

<mapper namespace="data.UserMapper">
    <resultMap type="data.User" id="userResultMap">
        <!-- 用id属性来映射主键字段 -->
        <id property="id" column="user_id"/>
        <!-- 用result属性来映射非主键字段 -->
        <result property="userName" column="user_name"/>
    </resultMap>
</mapper>

通过里面的id标签和result标签来建立映射关系,由propertycolumn分别指定实体类属性和数据表的列名。

2. 通过注解@Results@Result

这两个注解是与XML文件中的标签相对应的:

  • @Results对应resultMap
  • @Result对应result

这两个注解是应用在方法的级别上的,也就是在mapper方法上,如下:

@Select("select * from t_user where user_name = #{userName}")
@Results(
        @Result(property = "userId", column = "user_id"),
        @Result(property = "userName", column = "user_name")
)
User getUserByName(@Param("userName") String userName);

缺点:

  • 由于注解是针对方法的,对于Mapper中的每个操作数据库的方法都必须有相同的注解完成映射关系的建立,导致很多的配置是重复的;
  • 如果要避免配置重复的问题,可以采用在XML配置文件中配置这个resultMap,然后再@Result中通过id属性引用这个resultMap, 
    但是这样感觉很麻烦(由于使用了两种配置方式),不如直接使用基于XML的resultMap配置方式;

3. 通过属性配置完成映射

使用者最陌生的是通过配置属性来完成映射,Mybatis给我们提供了一种映射方式,如果属性的命名是遵从驼峰命名法的,数据列名遵从下划线命名, 
那么可以使用这种方式,类似如下:

  • userName对应user_name;
  • userId对应user_id;

配置代码如下:

SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
Configuration configuration = new Configuration();
configuration.setMapUnderscoreToCamelCase(true);
sqlSessionFactoryBean.setConfiguration(configuration);

4. 通过使用在SQL语句中定义别名完成映射

这种方式最直接,直接在SQL语句中建立别名来完成映射,如下:

@Select("select user_name as userName, user_id as userId from t_user where user_name = #{userName}")
User getUserByName(@Param("userName") String userName);
分享到:
评论

相关推荐

    mybatis自动生成实体类映射

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

    pgsql中使用mybatis生成实体类

    在MyBatis中,实体类(Entity Class)是对应数据库表的一对一映射,用于存储和操作数据。 要使用MyBatis在pgsql中自动生成实体类,你需要以下步骤: 1. **安装和配置MyBatis Generator(MBG)**:MBG是MyBatis的一...

    Mybatis中实体类属性与数据列表间映射方法介绍

    在Mybatis中,实体类属性与数据列表间的映射关系是非常重要的,本文将介绍四种常见的映射方法,供大家参考。 1. 通过XML映射文件中的resultMap方式 这是最常见的映射方法,通过在XML文件中定义resultMap,并使用id...

    Mybatis 实体类+Mapper实体映射文件+接口+Config主配置文件+测试类

    本资源包含Mybatis实体类、Mapper实体映射文件、接口、Config主配置文件以及测试类,是理解Mybatis工作原理和实际应用的重要资料。 1. **实体类(Entity)**:在Mybatis中,实体类通常代表数据库中的表,用于封装...

    自动生成MyBatis的实体类、实体映射XML文件

    在Java开发中,MyBatis是一个非常流行的持久层框架,它简化了数据库操作与Java对象之间的映射。MyBatis的使用通常涉及到手动编写大量的实体类、映射XML文件、Mapper接口、Service接口及其实现类以及Controller。然而...

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

    在Java开发中,实体类是数据表的映射,包含了数据库表中的字段和属性。生成实体类可以避免手动创建每个字段,减少了错误的可能性。而Mapper接口和XML映射文件则是MyBatis的核心部分,它们定义了SQL语句及其执行逻辑...

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

    这种映射可以通过`&lt;resultMap&gt;`标签实现,它定义了数据库列名和实体类属性之间的对应关系。例如: ```xml ``` 在这个例子中,`User`实体类的属性`userId`、`username`和`email`分别对应数据库表中的`user_...

    mybatis实体类自动生成工具

    MyBatis实体类自动生成工具是一款非常实用的开发辅助软件,尤其对于那些使用MyBatis作为持久层框架的开发者来说,它可以极大地提高开发效率。MyBatis是一个优秀的Java ORM(对象关系映射)框架,它允许开发者将SQL...

    mybatis逆向生成实体类工具

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

    mybatis自动生成实体类

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

    mybatis实体类反向生成

    "mybatis实体类反向生成"是指利用特定工具,根据数据库中的表结构自动生成对应的Java实体类以及MyBatis的映射文件(XML配置文件),这一过程极大地提高了开发效率,减少了手动编写这些基础代码的工作量。 1. **...

    本地自动生成MyBatis映射类实体类

    2. **实体类**:实体类是数据库表结构在代码中的映射,包含了与表字段相对应的属性和getter/setter方法。实体类是业务对象的基础,用于数据传输和模型表示。 3. **自动生成工具**:许多IDE如IntelliJ IDEA和Eclipse...

    mybatis自动生成实体映射类demo

    在实际开发中,手动编写实体类和映射XML文件是一项繁琐的工作,而MyBatis的代码生成器(generator)可以帮我们自动完成这些任务,极大地提高了开发效率。本Demo将介绍如何使用MyBatis的代码生成器来自动生成实体映射...

    mybatis反向生成实体类

    在实际开发中,我们经常需要根据数据库表结构生成对应的Java实体类(Entity)、数据访问对象(DAO)以及映射文件(Mapper)。MyBatis提供了一个名为"MyBatis Generator"的工具,能够帮助开发者自动生成这些代码,...

    mybatis表实体映射代码

    实体类(Entity Class)是Java对象,代表数据库中的一个表,它的属性对应于表的列。MyBatis通过Mapper接口和Mapper XML文件将这些实体类与SQL操作关联起来。当执行CRUD(创建、读取、更新、删除)操作时,MyBatis会...

    mybatis-generator-core自动生成实体类、dao接口和mapping映射文件

    利用mybatis-generator-core可以自动生成实体类、dao接口和mapping映射文件,里头也提供了使用说明: 1、进入lib文件夹里头。 2、修改generatorConfig.xml配置 主要修改数据库地址,用户名,密码,以及数据库名称,...

    mybatis自动生成实体类及实体类映射文件

    总结,MyBatis自动生成实体类及实体类映射文件的能力是其强大功能之一,通过MyBatis Generator,开发者可以大大提高开发效率,同时保持代码的整洁和一致性。正确理解和使用MBG,能够显著提升项目的开发速度和质量。

    mybatis 数据实体类自动生成器 automatic generation

    MyBatis 数据实体类自动生成器是一款强大的工具,它能够帮助开发者快速地生成与数据库表对应的Java实体类、DAO接口以及对应的XML配置文件,极大地提高了开发效率,减轻了手动编写这些重复代码的工作负担。...

    用于mybatis生成实体类以及dao

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

    MyBatis自定义映射 级联属性操作.zip

    MyBatis是一款强大的Java持久层框架,它简化了数据库与Java对象之间的交互,通过XML或注解的方式将SQL语句映射为Java方法,从而实现动态SQL和数据访问。在"自定义映射 级联属性操作"这个主题中,我们将深入探讨如何...

Global site tag (gtag.js) - Google Analytics