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 注意事项说明
- 请注意,这里我们所描述的一切方法都是基于 Service 层来说的
- 请注意,这里我们所描述的一切方法都是不是基于 Mapper 层来说的