MyBatis Plus 的 Service 获取单条数据

1. 简单介绍

嗨,大家好,今天给想给大家分享一下关于Mybatis-plus 的 Service 层的一些方法的使用今天没有总结,因为都是一些API没有什么可以总结的,直接看着调用就可以了。
下边的连接也可以看到同样的内容: 这里地址就是带中文的

https://wnagzainote.yuque.com/books/share/46f28001-903f-4fb6-abdc-ecf9c2bf02bb?# 《MyBatis Plus 学习》

下面介绍 IService 接口中提供了很多以 get 开头的方法,这些方法用来从数据库中获取一条记录

2. 接口说明

接口提供了如下五个 getXXX 方法:

// 根据 ID 查询
T getById(Serializable id);
// 根据 Wrapper,查询一条记录。结果集,如果是多个会抛出异常,随机取一条加上限制条件 wrapper.last("LIMIT 1")
T getOne(Wrapper<T> queryWrapper);
// 根据 Wrapper,查询一条记录
T getOne(Wrapper<T> queryWrapper, boolean throwException);
// 根据 Wrapper,查询一条记录
Map<String, Object> getMap(Wrapper<T> queryWrapper);
// 根据 Wrapper,查询一条记录
<V> V getObj(Wrapper<T> queryWrapper, Function<? super Object, V> mapper);

3. 参数说明

  • id:数据库主键 ID
  • queryWrapper:实体对象封装操作类 QueryWrapper
  • throwException:有多个 result 是否抛出异常
  • entity:实体对象
  • mapper:转换函数

4. 实例代码

4.1 根据数据ID、 QueryWrapper、Map 条件查询数据

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.hxstrive.mybatis_plus.model.UserBean;
import com.hxstrive.mybatis_plus.service.UserService;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
 
import javax.jws.soap.SOAPBinding;
import java.util.Map;
import java.util.function.Function;
 
@RunWith(SpringRunner.class)
@SpringBootTest
class Get1Test {
 
    @Autowired
    private UserService userService;
 
    @Test
    void contextLoads() {
        System.out.println("================= getById ================");
        System.out.println( userService.getById(1) );
 
        System.out.println("================== getOne ================");
        QueryWrapper<UserBean> wrapper = new QueryWrapper<>();
        wrapper.eq("user_id", 2);
        System.out.println( userService.getOne(wrapper) );

        System.out.println("================== getMap ================");
        Map<String, Object> resultMap = userService.getMap(wrapper);
        System.out.println(JSONObject.toJSONString(resultMap));
 
        System.out.println("================== getObj =================");
        userService.getObj(wrapper, new Function<Object, UserBean>() {
            @Override
            public UserBean apply(Object o) {
                System.out.println(JSONObject.toJSONString(o));
                return null;
            }
        });
    }
 
}

4.2 getOne 测试当返回多条数据时是否抛出异常

通过指定 throwEx=true 参数,然后测试当返回多条数据时是否抛出异常

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.hxstrive.mybatis_plus.model.UserBean;
import com.hxstrive.mybatis_plus.service.UserService;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
 
@RunWith(SpringRunner.class)
@SpringBootTest
class Get2Test {
 
    @Autowired
    private UserService userService;
 
    @Test
    void contextLoads() {
        QueryWrapper<UserBean> wrapper = new QueryWrapper<>();
        wrapper.lt("user_id", 10);
 
        // 第二个参数
        // 如果返回的结果集多余一条数据,则抛出如下错误:
        // TooManyResultsException
        UserBean userBean = userService.getOne(wrapper, true);
        System.out.println(userBean);
    }
 
}

注意:这里是会抛出异常的

4.3 注意事项说明

  1. 请注意,这里我们所描述的一切方法都是基于 Service 层来说的
  2. 请注意,这里我们所描述的一切方法都是不是基于 Mapper 层来说的
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知识的搬运工旺仔

希望能帮助到大家学习

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值