Mybatis返回id详解

一、Mybatis返回id

在Mybatis中,当执行insert语句时,可以通过标签获取插入的主键id。通过这个id,我们可以进一步操作插入的数据。

// 使用标签获取插入的主键id

    
        SELECT LAST_INSERT_ID()
    
    INSERT INTO users (username, password) VALUES (#{username}, #{password})


// 调用插入方法并获取插入的主键id
User user = new User("testUser", "123456");
userMapper.insertUser(user);
Integer id = user.getId();

这里,我们可以看到通过使用标签,Mybatis返回了插入数据的主键id。使用这个id,我们可以方便地获取插入的数据。同时,也可以在需要的地方,使用这个id进行相关操作。

二、Mybatis返回主键

除了使用标签获取主键id外,我们还可以通过resultType指定返回数据的类型,从而获取主键。如下所示:

// 设置返回类型为Integer,获取返回的主键id

    INSERT INTO users (username, password) VALUES (#{username}, #{password})


// 调用插入方法并获取插入的主键id
User user = new User("testUser", "123456");
Integer id = userMapper.insertUser(user);

在这里,我们可以发现,通过设置insert语句的resultType为Integer,可以直接返回插入后的主键id。这个方法与使用标签是等效的。

三、Mybatis返回id集合

在需要获取多个id时,我们可以使用标签的order属性。该属性指定了返回id的顺序。当order为BEFORE时,表示返回插入语句执行前生成的id,当order为AFTER时,表示返回插入语句执行后生成的id。

// 在插入多条数据时,设置标签的order属性,以返回id集合

    
        SELECT LAST_INSERT_ID()
    
    INSERT INTO users (username, password) VALUES 
    
        (#{user.username}, #{user.password})
    


// 插入多条数据,并获取对应的id集合
List userList = new ArrayList();
userList.add(new User("testUser1", "123456"));
userList.add(new User("testUser2", "123456"));
userMapper.insertUsers(userList);
List idList = userList.stream().map(User::getId).collect(Collectors.toList());

在这里,我们可以看到通过设置标签的order属性,Mybatis返回了插入数据的id集合。通过操作这个集合,我们可以获取插入的多条数据对应的id。

四、Mybatis删除返回int值

当执行delete语句时,我们可以获取该语句操作的数据条数,可以使用int类型接收返回结果。

// 删除指定id的用户,并返回操作的数据条数

    DELETE FROM users WHERE id = #{id}


// 调用删除方法并接收返回值
int result = userMapper.deleteUserById(1);

在这里,我们可以看到通过接收返回值,我们能够获取到执行delete语句所影响的数据条数。这个返回值可以方便我们进行操作。例如,当返回结果为0时,说明没有对应的数据被删除。

五、Mybatis返回map

有时候,我们需要返回一些特定的数据,可以使用map来接收返回结果。如下所示:

// 查询指定id的用户,返回一个map类型的结果

    SELECT id, username, password FROM users WHERE id = #{id}


// 调用查询方法并接收返回值
Map resultMap = userMapper.getUserById(1);
Integer id = (Integer) resultMap.get("id");
String username = (String) resultMap.get("username");
String password = (String) resultMap.get("password");

在这里,我们可以看到通过设置返回类型为map,以及sql语句中选择需要返回的列,我们可以得到一个map类型的返回值。通过这个返回值,我们可以方便地获取需要的数据。

六、Mybatis返回int

当执行update语句时,我们可以获取该语句操作的数据条数,可以使用int类型接收返回结果。

// 更新指定id的用户信息,并返回操作的数据条数

    UPDATE users SET username = #{username}, password = #{password} WHERE id = #{id}


// 调用更新方法并接收返回值
User user = new User(1, "newUsername", "newPassword");
int result = userMapper.updateUser(user);

在这里,我们可以看到通过接收返回值,我们能够获取到执行update语句所影响的数据条数。这个返回值可以方便我们进行操作。例如,当返回结果为0时,说明没有对应的数据被更新。

七、Mybatis查询返回list

Mybatis最常用的查询语句返回结果是list类型,该类型可以存储多个查询结果。

// 查询所有用户信息,返回一个list类型的结果

    SELECT id, username, password FROM users


// 调用查询方法并接收返回值
List userList = userMapper.getAllUsers();

通过这个例子,我们可以看到Mybatis最常用的查询语句返回结果是list类型。该类型可以存储多个查询结果,非常适合大量数据的查询操作。

八、Mybatis返回多个结果集

在使用存储过程等需要返回多个结果集的操作时,Mybatis也可以方便地支持多个结果集的返回。

// 查询多个结果集

    { CALL usp_multiple_results(#{param1}, #{param2}, #{resultSet1, jdbcType=CURSOR, mode=OUT},
                                                #{resultSet2, jdbcType=CURSOR, mode=OUT},
                                                #{resultSet3, jdbcType=CURSOR, mode=OUT})}


// 调用查询方法并接收返回值
Map resultMap = userMapper.getMultipleResultSets(param1, param2);
List resultSet1 = (List) resultMap.get("#result-set-1");
List resultSet2 = (List) resultMap.get("#result-set-2");
List resultSet3 = (List) resultMap.get("#result-set-3");

通过这个例子,我们可以看到Mybatis可以方便地支持多个结果集的返回。通过设置标签的resultSets属性,我们可以获取多个结果集,并进行处理。

九、Mybatis返回integer

有时候,我们需要返回一些数字类型的数据,可以使用Integer来接收。

// 查询用户总数,返回一个integer类型的结果

    SELECT COUNT(*) FROM users


// 调用查询方法并接收返回值
int count = userMapper.getUserCount();

通过这个例子,我们可以看到Mybatis可以使用Integer来接收数字类型的数据。这个返回类型比较灵活,可以适应不同的需求。

原创文章,作者:HZXFF,如若转载,请注明出处:https://www.506064.com/n/333967.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
HZXFFHZXFF
上一篇 2025-02-05 13:04
下一篇 2025-02-05 13:05

相关推荐

  • 理解Mybatis中的SQL Limit用法

    Mybatis是一种非常流行的ORM框架,提供了SQL映射配置文件,可以使用类似于传统SQL语言的方式编写SQL语句。其中,SQL的Limit语法是一个非常重要的知识点,能够实现分…

    编程 2025-04-29
  • 神经网络代码详解

    神经网络作为一种人工智能技术,被广泛应用于语音识别、图像识别、自然语言处理等领域。而神经网络的模型编写,离不开代码。本文将从多个方面详细阐述神经网络模型编写的代码技术。 一、神经网…

    编程 2025-04-25
  • Linux sync详解

    一、sync概述 sync是Linux中一个非常重要的命令,它可以将文件系统缓存中的内容,强制写入磁盘中。在执行sync之前,所有的文件系统更新将不会立即写入磁盘,而是先缓存在内存…

    编程 2025-04-25
  • Python输入输出详解

    一、文件读写 Python中文件的读写操作是必不可少的基本技能之一。读写文件分别使用open()函数中的’r’和’w’参数,读取文件…

    编程 2025-04-25
  • Python安装OS库详解

    一、OS简介 OS库是Python标准库的一部分,它提供了跨平台的操作系统功能,使得Python可以进行文件操作、进程管理、环境变量读取等系统级操作。 OS库中包含了大量的文件和目…

    编程 2025-04-25
  • MPU6050工作原理详解

    一、什么是MPU6050 MPU6050是一种六轴惯性传感器,能够同时测量加速度和角速度。它由三个传感器组成:一个三轴加速度计和一个三轴陀螺仪。这个组合提供了非常精细的姿态解算,其…

    编程 2025-04-25
  • nginx与apache应用开发详解

    一、概述 nginx和apache都是常见的web服务器。nginx是一个高性能的反向代理web服务器,将负载均衡和缓存集成在了一起,可以动静分离。apache是一个可扩展的web…

    编程 2025-04-25
  • git config user.name的详解

    一、为什么要使用git config user.name? git是一个非常流行的分布式版本控制系统,很多程序员都会用到它。在使用git commit提交代码时,需要记录commi…

    编程 2025-04-25
  • 详解eclipse设置

    一、安装与基础设置 1、下载eclipse并进行安装。 2、打开eclipse,选择对应的工作空间路径。 File -> Switch Workspace -> [选择…

    编程 2025-04-25
  • Linux修改文件名命令详解

    在Linux系统中,修改文件名是一个很常见的操作。Linux提供了多种方式来修改文件名,这篇文章将介绍Linux修改文件名的详细操作。 一、mv命令 mv命令是Linux下的常用命…

    编程 2025-04-25

发表回复

登录后才能评论