持久层接口----IService 接口中关于obj的问题

embedded/2024/12/21 6:22:58/

一、概述

        IService 接口是 MyBatis-Plus 提供的一个通用 Service 层接口,它封装了常见的 CRUD 操作,包括插入、删除、查询和分页等。通过继承 IService 接口,可以快速实现对数据库的基本操作,同时保持代码的简洁性和可维护性。

持久层接口的官网:持久层接口 | MyBatis-Plus (baomidou.com)

二、我遇到的obj问题

官网中的范例:

java">// 假设有一个 QueryWrapper 对象,设置查询条件为 name = 'John Doe',并将结果转换为 String
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "John Doe");
String userName = userService.getObj(queryWrapper, obj -> ((User) obj).getName()); // 调用 getObj 方法
if (userName != null) {System.out.println("User name found: " + userName);
} else {System.out.println("User name not found.");
}

之后出现了错误信息,根据提供的异常日志,错误信息 java.lang.ClassCastException: java.lang.Integer cannot be cast to com.xxxx.entity.User 表明在代码中出现了类型转换错误,即尝试将一个 Integer 类型的对象强制转换为 User 类型,而这显然是错误的。

        因为getObj获取的是数据库第一列的字段,我定义的第一个字段是int类型,无法转换为user类型或String类型

所以我把类型改为了Object类型,结果没有错误

java">    @Testpublic void getObj(){// 假设有一个 QueryWrapper 对象,设置查询条件为 name = '梨花',并将结果转换为 StringQueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.eq("username", "张三");Object userId = userService.getObj(queryWrapper, obj -> obj); // 调用 getObj 方法System.out.println(userId);}

同理,listObjs()方法也是获取数据库第一列的字段


http://www.ppmy.cn/embedded/147460.html

相关文章

GaussDB数据库迁移方案介绍

云数据库GaussDB提供了多种数据迁移方案&#xff0c;可满足从MySQL数据库、Oracle数据库、GaussDB数据库、PostgreSQL数据库、DB2 for LUW、RDS for SQL Server、Microsoft SQL Server数据库到云数据库GaussDB的迁移。 数据迁移工具有DRS、DAS和gs_loader。推荐使用DRS&#x…

[每周一更]-(第128期):CentOS源码安装PostgreSQL

文章目录 **1. 环境准备****安装必要的依赖****2. 下载 PostgreSQL 源码****3. 编译和安装****编译 PostgreSQL****4. 初始化数据库****5. 启动和管理 PostgreSQL 服务****手动启动 PostgreSQL****将 PostgreSQL 添加到环境变量****6. 创建用户和数据库****7. 配置远程访问**修…

2025考研加油!Jing也加油哦!

一恍惚&#xff0c;离自己考研初试过去都两年了&#xff01;研究生生活也过去一大半&#xff01;借此机会也总结一下研究生这一段生活——研究生生活&#xff08;上&#xff09; About I 昨天实验室聚餐&#xff0c;作为老生欢迎新生&#xff0c;啊啊啊&#xff0c;真的没想到…

Halcon单相机+机器人=眼在手上#标定心得

首先&#xff0c;这个标定板肯定是放在我们要作业的工作台上的 目的 **1&#xff0c;得到标定物&#xff08;工作台&#xff09;与机器人底座之间的pose转换关系。2&#xff0c;得到相机与机器人末端tool的的转换关系。 两个不确定的定量 1&#xff0c;标定板与机器人底座b…

Nginx-rtmp-module 模块应用

本章会介绍FFmpeg 的具体应用与安装配置、 NRM常用配置字典&#xff0c;以及直播系统中常用的 架构体系。 1. FFmpeg 介绍 FFmpeg 是一个完整的、 跨平台的解决方案&#xff0c;用于记录、转换和流化音&#xff0f;视频。 FFmpeg 采用 LGPL 或 GPL许可证&#xff0c;提供了录…

HYPRE: BoomerAMG选项和优化

文章目录 BoomerAMG选项和优化OverviewAMG AlgorithmOptionsTurning on BoomerAMGStrong ThresholdGoing DeeperTimingMore OptionsMax LevelsCoarsen TypeAgressive CoarseningInterpolation TypeP MaxPutting it All Together Full List of Options BoomerAMG选项和优化 Hyp…

解锁 SSM 与 Vue 在新锐台球厅管理系统设计与实现中的融合密码

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常适…

static_cast与dynamic_cast的区别

主要区别如下 &#xff08;1&#xff09;作用阶段方面&#xff1a;static_cast在编译时转换&#xff1b;dynamic_cast在运行时检查类型。 &#xff08;2&#xff09;转换目标&#xff1a;static_cast用于C语言强制转换可替代方案&#xff0c;可能存在信息丢失&#xff0c;没有…