接口 2.2 io.mybatis.mapper.base.EntityMapper<T, I>
实体类最基础的通用方法:
int insert(T entity)
: 保存实体int insertSelective(T entity)
: 保存实体中不为空的字段int deleteByPrimaryKey(I id)
: 根据主键删除int delete(T entity)
: 保存实体信息批量删除int updateByPrimaryKey(T entity)
: 根据主键更新实体int updateByPrimaryKeySelective(T entity)
: 根据主键更新实体中不为空的字段Optional<T> selectByPrimaryKey(I id)
: 根据主键查询实体Optional<T> selectOne(T entity)
: 根据实体字段条件查询唯一的实体List<T> selectList(T entity)
: 根据实体字段条件批量查询int selectCount(T entity)
: 根据实体字段条件查询总数
这个接口中返回值特殊的有两个 Optional<T>
,使用的 Java8 中的 Optional
类型,表明接口返回值可能为空,
使用时应该判断或使用 Optional
提供的 orXX
方法,比如下面几种情况:
- 返回值不能为空,为空则抛出异常:
Optional<User> userOptional = entityMapper.selectByPrimaryKey(user.getId()); return userOptional.orElseThrow(() -> new RuntimeException("数据不存在"));
- 如果不存在,新建一个:
Optional<User> userOptional = entityMapper.selectByPrimaryKey(user.getId()); return userOptional.orElseGet(User::new)
- 如果不存在,直接返回 null:
Optional<User> userOptional = entityMapper.selectByPrimaryKey(user.getId()); return userOptional.orElse(null);
真正使用 Optional
的时候,要尽可能避免以前 obj != null
这种判断思维,避免使用 Optional.isPresent()
判断,才能真正掌握 Optional
的用法。
如果你不喜欢上面返回值为 Optional
,就想返回 T
,可以参考 2.1.5 通过修改接口方法的返回值和入参,就能变身无数个通用方法 中介绍实现方式。