myBatis-Plus中getOne和selectOne的区别

getOne 和 selectOne 都是 Mybatis Plus 中的方法,用于从数据库表中获取单条记录。

你真正弄懂过myBatisPlus中getOne和selectOne两个方法的区别吗?

在网上搜了半天,想弄明白这两个方法的区别,到底有什么不同。但是所搜到的并非我想看到的答案。

于是自己请教了同事,大概总结了一下:

首先,getOne和selectOne调用的位置是不同的。getOne是在通用service中定义的方法,如果用的是mapper或者serviceImpl,则是selectOne。

其次,主要区别在于返回值的类型:

getOne 方法会返回单条记录的实体对象。

selectOne 方法会返回包含单条记录的列表。

举个例子,假设有一个 User 实体类,对应数据库表 t_user,包含 id, name, age 等字段。如果想要根据 id 获取单条记录,可以使用 getOne 或 selectOne 方法。

使用 getOne 的代码如下:

// 此时 user 就是查询到的单条记录,类型为 User

User user = userMapper.getOne(1L);

使用 selectOne 的代码如下:

// 此时 user 就是查询到的单条记录,类型为 User

List<User> userList = userMapper.selectOne( new QueryWrapper<User>().eq("id", 1L));

User user = userList.get(0);

需要注意的是,如果查询返回的记录数超过一条,那么 getOneselectOne 都会抛出异常。

对于期望获取单条记录的情况,建议使用 getOne,因为它更简洁易读。但是,如果不确定查询是否会返回多条记录,或者需要处理未返回记录的情况,则可能希望使用 selectOne 并检查返回的列表的大小。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值