首页 > 其他分享 >mybatis xml里的 resultMap、resultOrdered、resultSets、resultSetType、resultType 区别

mybatis xml里的 resultMap、resultOrdered、resultSets、resultSetType、resultType 区别

时间:2024-10-01 18:01:12浏览次数:8  
标签:xml username resultOrdered 映射 结果 resultMap MyBatis password id

在MyBatis中,映射结果集是一项重要的功能,用于将数据库查询结果映射到Java对象中。为了实现这一功能,MyBatis提供了多个配置选项,如 resultMapresultOrderedresultSetsresultSetTyperesultType。以下是这些配置选项的详细解释及示例:

1. resultType

resultType 是最简单的结果映射方式之一,它指定了查询结果应该映射到的Java类。MyBatis会自动将查询结果的列名和Java属性的名进行匹配(基于命名规则)。

示例

假设有一个 User 类:

public class User {
    private int id;
    private String username;
    private String password;

    // getters and setters
}

MyBatis XML配置:

<select id="getUserById" resultType="com.example.User">
    SELECT id, username, password FROM users WHERE id = #{id}
</select>

2. resultMap

resultMap 是最灵活和强大的结果映射方式。它允许你指定查询结果如何映射到Java对象的属性上,甚至允许处理复杂的映射(如嵌套对象和集合)。

示例

MyBatis XML配置:

<resultMap id="userResultMap" type="com.example.User">
    <id property="id" column="id"/>
    <result property="username" column="username"/>
    <result property="password" column="password"/>
</resultMap>

<select id="getUserById" resultMap="userResultMap">
    SELECT id, username, password FROM users WHERE id = #{id}
</select>

3. resultOrdered

resultOrdered 并不是一个独立的配置选项,而是在 resultMap<constructor> 标签中使用的一个属性,用于指定构造方法参数的顺序。

示例

假设 User 类有一个构造方法:

public class User {
    private int id;
    private String username;
    private String password;

    public User(int id, String username, String password) {
        this.id = id;
        this.username = username;
        this.password = password;
    }

    // getters and setters
}

MyBatis XML配置:

<resultMap id="userResultMap" type="com.example.User">
    <constructor resultOrdered="true">
        <idArg column="id" javaProperty="id"/>
        <arg column="username" javaProperty="username"/>
        <arg column="password" javaProperty="password"/>
    </constructor>
</resultMap>

<select id="getUserById" resultMap="userResultMap">
    SELECT id, username, password FROM users WHERE id = #{id}
</select>

4. resultSets

resultSets 是在使用存储过程时指定多个结果集的处理方式。普通查询通常只返回一个结果集,但存储过程可以返回多个结果集。

示例

假设存储过程 getUserAndOrders 返回两个结果集,一个是用户信息,一个是订单信息。

MyBatis XML配置:

<select id="getUserAndOrders" statementType="CALLABLE" resultSets="userResultMap,ordersResultMap">
    {CALL getUserAndOrders(#{userId, jdbcType=INTEGER, mode=IN, javaType=int})}
</select>

<resultMap id="userResultMap" type="com.example.User">
    <id property="id" column="id"/>
    <result property="username" column="username"/>
    <result property="password" column="password"/>
</resultMap>

<resultMap id="ordersResultMap" type="com.example.Order">
    <id property="id" column="id"/>
    <result property="orderId" column="order_id"/>
    <result property="amount" column="amount"/>
</resultMap>

5. resultSetType

resultSetType 指定了MyBatis应该如何处理数据库的游标(结果集类型),它影响MyBatis对结果集的滚动和更新行为。常见的值有 FORWARD_ONLYSCROLL_INSENSITIVESCROLL_SENSITIVE

  • FORWARD_ONLY:结果集只能向前滚动(默认)。
  • SCROLL_INSENSITIVE:结果集可以滚动,但对结果集的更改不敏感。
  • SCROLL_SENSITIVE:结果集可以滚动,并且对结果集的更改敏感。

示例

MyBatis XML配置:

<select id="getUserById" resultSetType="SCROLL_INSENSITIVE" resultType="com.example.User">
    SELECT id, username, password FROM users WHERE id = #{id}
</select>

总结

  • resultType:简单映射,用于直接将结果列映射到Java属性。
  • resultMap:复杂映射,允许细粒度控制结果到Java对象的映射。
  • resultOrdered:在 resultMap<constructor> 中使用,指定构造方法参数顺序。
  • resultSets:处理存储过程返回的多个结果集。
  • resultSetType:指定结果集的类型,控制游标的滚动和更新行为。

这些配置选项使得MyBatis能够灵活地处理各种数据库查询结果,并将其映射到Java对象中。根据具体需求,你可以选择最适合的配置方式。

标签:xml,username,resultOrdered,映射,结果,resultMap,MyBatis,password,id
From: https://www.cnblogs.com/del88/p/18443025

相关文章

  • mujoco 3.x版本导入urdf/xml文件并仿真显示
    我是在Ubuntu22.04下操作的~想要实现机器人相关控制,你需要正确地安装ROS2、mujoco等~关于URDFURDF(UniversalRobotDescriptionFormat)是一种用于描述机器人模型的标准格式,其实就相当于3维模型~常用于仿真。URDF文件(.urdf)通常以XML格式编写,允许定义机器人的链接(links)、......
  • mujoco仿真中xml的<actuator>
    <actuator>标签用来定义模拟环境中控制关节和其他可动部件的执行器。执行器将外部命令转化为模拟中的力或力矩,从而驱动关节或滑动部件的运动。以下是我辛苦整理的表格~类型参数类型默认值描述示例代码actuator/generalnamestring-元素名称actuatorname="my_actuator"clas......
  • java-快速将普通main类变为javafx类,并加载自定义fxml
    java-快速将普通main类变为javafx类,并加载自定义fxml前提步骤1.普通类继承Application2.实现main方法3.写一个controller4.写一个fxml文件5.写start方法加载fxml6.具体代码7.运行即可前提使用自带javafx的jdk,这里使用的是jdk1.834,当然你可以使用其他的可行......
  • mybatis基于注解、XML配置文件的形式来定义SQL语句
    一、mybatis基于注解定义SQL语句员工类@Data@NoArgsConstructor//无参@AllArgsConstructor//有参publicclassEmp{privateIntegerid;//idprivateStringusername;//用户名privateStringpassword;//密码privateStringname;//姓名privat......
  • 第2天:熟悉Android Studio补充材料——`activity_main.xml`解读
    下面是对“第2天:熟悉AndroidStudio”该文学习的更深层次的补充材料,对activity_main.xml文件的理解。下面对activity_main.xml文件中每一行进行详细解释:<?xmlversion="1.0"encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayoutxmlns:android="ht......
  • 猜拳数据集-石头-剪刀-布数据集-YOLOv9 - YOLOv8 - YOLOv5 - YOLOv7 - COCO JSON - YO
    “石头-剪刀-布”计算机视觉项目是一个利用摄像头捕捉手势并识别出手势是石头、剪刀还是布的项目。这类项目通常用于学习和展示计算机视觉技术,如图像处理、特征提取以及机器学习或深度学习模型的应用。数据介绍rock-paper-scissorsComputerVisionProject数据集信息......
  • IDea中使用MyBatis 实现原生功能和xml分页功能
    在开始之前,我们假定您已经:熟悉Java环境配置及其开发熟悉关系型数据库,比如MySQL熟悉SpringBoot及相关框架熟悉Java构建工具,比如Maven        今天我们要了解和学习的是MyBatis原生功能,在MyBatis中提供了 @Insert 、@Delete 、@Update 、@Select 4......
  • 三篇文章速通JavaSE到SpringBoot框架 (中) IO 进程线程 网络编程 XML MySQL JDBC相关
    文章目录IOfile类的作用I/O的作用将上篇文章综合项目使用IO流升级所需知识点进程线程创建线程的三种方式网络编程网络编程介绍IP地址端口号网络通信协议网络通信协议的分层演示代码XMLXML的作用是什么?xml特点注解什么是注解?注解的使用注解的重要性注解的使用实例M......
  • 整合了mybatis-plus后,就不用再xml文件里面写sql了吗
    整合了mybatis-plus后,就不用再xml文件里面写sql了吗使用mybatis-plus接口这是一个根据特定条件筛选学生信息的接口,用户可以通过姓名,年龄,性别,爱好来筛选学生,可以都选也可以都不选。这就迫使在java代码中添加了很多if语句publicList<SysStudent>queryList(SysStudent......
  • PbootCMS生成的sitemap.xml中增加tag标签链接
    要在PBootCMS中实现在sitemap.xml中包含标签(tag)链接,可以通过修改相关模型和控制器来实现。以下是详细的步骤和代码示例:步骤修改SitemapModel类在 SitemapModel.php 中增加获取指定分类标签的方法。修改SitemapController类在 SitemapController.php 中增加处理......