首页 > 其他分享 >Mybatis中ResultMap

Mybatis中ResultMap

时间:2024-12-27 18:55:33浏览次数:8  
标签:Java 映射 user private ResultMap Mybatis id User

在 MyBatis 中,resultMap用来将数据库查询结果映射到 Java 对象。定义了如何将 SQL 查询结果的列与 Java 对象的属性进行映射。它支持复杂的映射关系,如一对多、多对一等。

基本的ResultMap

假设有一个User类:

class User {
    private Long id;
    private String username;
}
<resultMap id="userResultMap" type="User">
  <id property="id" column="user_id"/>
  <result property="username" column="user_name"/>
</resultMap>

id表示主键映射,通常对应数据库表中的主键字段。【要放在第一行

result表示普通字段映射,property是Java类的属性,column是数据库表中的列名

上边的resultMap对应的select语句就可以这么写:

select id "user_id", username "user_name"
from user;

开启autoMapping映射

autoMapping映射是一种自动映射机制,用于自动将 SQL 查询结果的列与 Java 对象的属性进行匹配。它简化了映射的配置,不需要显式地为每个属性定义映射关系。

<resultMap id="userResultMap" type="User" autoMapping="true" />

上边的resultMap对应的select语句就可以这么写:

select id, username
from user;

在启用了 autoMapping 后,user_id 会自动映射到 userId

复杂的ResultMap

一对多映射[collection]

场景:有一个user对象,和一个Order对象,一个用户可以有多个订单。

一个User类如下:

class User {
    private Long id;
    private String User;
    List<Order> orders;
}

class Order {
    private Long id;
    private Date orderDate;
}

在这个例子中,User 类有一个 orders 属性(一个 List<Order>)。collection 元素用于指定一对多的映射关系,ofType 属性指定集合中元素的类型。

<resultMap id="userResultMap" type="User" autoMapping = "true">
  <id property="id" column="user_id"/>
  <collection property="orders" ofType="Order" autoMapping = "true">
    <id property="id" column="order_id"/>
  </collection>
</resultMap>

使用Mybatis-Plus的分页插件进行分页查询时,如果结果需要使用<collection>进行映射,只能使用嵌套查询,而不能使用嵌套结果映射。

多对一映射[association]

场景:有一个 Order 对象,它关联到一个 User 对象。

class User {
    private Long id;
    private String User;
}

class Order {
    private Long id;
    private Date orderDate;
    private User user;
}

在这个例子中,Order 对象的 user 属性是通过 association 映射的,它表示多对一关系。

<resultMap id="orderResultMap" type="Order" autoMapping="true">
  <id property="orderId" column="order_id"/>
  <association property="user" javaType="User" autoMapping="true">
    <id property="id" column="user_id"/>
  </association>
</resultMap>

ResultMap中的属性

  • property:映射的 Java 类的属性名称。
  • column:数据库表中的列名。
  • javaType:用于指定映射的 Java 类型。
  • typeHandler:用于指定类型处理器,处理数据库列和 Java 属性之间的转换。
  • ofType:用于集合映射时,指定集合中元素的类型。
  • association:用于表示一对多或多对一关系映射。

标签:Java,映射,user,private,ResultMap,Mybatis,id,User
From: https://blog.csdn.net/qq_57882997/article/details/144715824

相关文章

  • 详解 Spring Boot 2.7.18 与 MyBatis PageHelper 的整合步骤
    一、添加依赖在pom.xml文件中添加必要的依赖:<dependencies><!--SpringBootStarterWeb--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>&l......
  • mybatis-plus 用法总结
    MyBatis-Plus(简称MP)是MyBatis的增强工具,旨在简化开发者的CRUD操作。它在MyBatis的基础上提供了更多的功能和便利性,如代码生成器、分页插件、性能分析插件等,使开发者能够更高效地进行数据库操作。MyBatis-Plus保持了MyBatis原有的灵活性和易用性,同时通过一些约定和默......
  • 理解 MyBatis JdbcType
    背景有时候,在使用MyBatis时会报下面的错误:Errorsettingnullforparameter#6withJdbcTypeOTHER.TrysettingadifferentJdbcTypeforthisparameteroradifferentjdbcTypeForNullconfigurationproperty.Cause:java.sql.SQLException:无效的列类型:1111;un......
  • Mybatis框架实现单表增删改查
    一数据库准备在MySQL数据库中创建travel_application表:CREATETABLEtravel_application(IDvarchar(8)NOTNULL,namevarchar(255)DEFAULTNULL,departmentvarchar(255)DEFAULTNULL,destinationvarchar(255)DEFAULTNULL,departuredatedateDEFAULTNULL,ret......
  • 告别数据库小白:MyBatis让你秒变数据库操作达人!
    Whitegraces:个人主页......
  • Mybatis-Plus基础
    这里写目录标题MyBatisPlus基础1.MyBatisPlus使用1.1引入MyBatisPlus依赖1.2Mapper接口继承BaseMapper<T>1.3测试2.MyBatisPlus注解2.1常见注解2.2IdType枚举2.3@TableField使用场景3.MyBatisPlus配置4.核心功能4.1条件构造器4.1.1基于QueryWrapper查询4.1......
  • Mybatis-Plus实现多租户数据隔离
    上篇文章中已经介绍了实现mybatisPlus多租户的最简单的方式,但逻辑也比较单一,只有多租户的基础功能这个多租户plus版本在原来的基础功能上做了一些功能的集成1.通过配置来控制多租户功能的启用2.通过配置来指定多租户字段3.通过配置来排除需要走多租户逻辑的表4.通过扫......
  • mybatis 连接 ORACLE
    mybatis连接ORACLE|Id|Title|DateAdded|SourceUrl|PostType|Body|BlogId|Description|DateUpdated|IsMarkdown|EntryName|CreatedTime|IsActive|AutoDesc|AccessPermission||-------------|-------------|-------------|-------------|--......
  • mybatis generatorConfiguration 生成代码
    mybatisgeneratorConfiguration生成代码|Id|Title|DateAdded|SourceUrl|PostType|Body|BlogId|Description|DateUpdated|IsMarkdown|EntryName|CreatedTime|IsActive|AutoDesc|AccessPermission||-------------|-------------|-------------|......
  • mybatis入门
    一、Mybatis的简介mybatis封装了jdbc的持久层框架,前身为ibatis,在配置文件中编写sql,是不完全orm映射框架。查看百度百科的介绍1、支持普通sql查询2、高级映射3、存储过程......