条件
例
//根据学生id查询数据
studentService.list(Wrappers.<Student>lambdaQuery().eq(Student::getStudentid,studentid()))
//一个表中两个字段进行比较
wrapper.apply("out_count<order_count")
常用方法
Mapper层接口
一、查询
//1、查询List<对象> 返回List<T>
List<T> list = selectList(QueryWrapper<T> wrapper);
//例
QueryWrapper wrapper=new QueryWrapper();
wrapper.eq("uaccount",users.getUaccount());//这个不写就是无条件查询全部
List<Users> users = mapper.selectList(wrapper);
或
List<Users> users = mapper.selectList(Wrappers.<Users>lambdaQuery().eq(Users::getUaccount,studentid()))
//2、通过ID查询,返回实体类对象
selectById(I id);
//3、通过实体entity查询一条数据,返回实体类对象
selectOne(T entity);
//4、通过ID集合批量查询,返回List<T>
selectBatchIds(List<I> idList);
//5、统计查询,返回Integer
selectCount(T entity);
//6、通过自定义MAP查询,返回List<T>
selectByMap(Map<String, Object> columnMap);
//7、分页查询,page为分页实体,entityWrapper为查询条件构造器,返回Page<T>
Page<User> page = new Page<>(1, 3);
selectPage(Page<T> page, EntityWrapper<T> entityWrapper);
二、添加
//返回int(添加的行数)
insert(T entity);
//例
Users users=new Users(null,"张三","男",20);
mapper.insert(users);
三、删除
//1、根据条件,删除记录,返回int(删除的行数)
delete(QueryWrapper<T> wrapper);
//2、通过ID删除,返回int(删除的行数)
deleteById(I id);
//3、通过自定义MAP删除,返回int(删除的行数)
deleteByMap(Map<String, Object> columnMap);
//4、批量删除,返回int(删除的行数)
deleteBatchIds(List<I> idList);
四、修改
//1、通过实体的ID更新,返回int(修改的行数)
updateById(T entity);
//例
//想要修改,必须先获取要修改的数据
UpdateWrapper wrapper = new UpdateWrapper<>();
wrapper.eq("name","zhangsan");//条件:根据名字查询数据
Users user = mapper.selectOne(wrapper);//查询一条数据
user.setAge(29);//修改年龄
user.setSex("男");//修改性别
userMapper.updateById(user);//根据user中的id修改数据库里的内容
//2、通过条件修改,返回int(修改的行数)
update(T updateEntity,QueryWrapper<T> wrapper);
//例
UpdateWrapper<User> wrapper = new UpdateWrapper<>();
1、wrapper.eq("name","zhangsan");
User user = new User();
user.setAge(18);
userMapper.update(user, wrapper);//user更新数据,wrapper查询条件
2、wrapper.eq("name","zhangsan").set("age", 18);
userMapper.update(null, updateWrapper);
service层接口
一、查询
//1、根据ID查询,返回实体类
getById(Serializable id);
//2、根据条件查询一条记录,返回实体类
getOne(QueryWrapper<T> queryWrapper);//如果是多个会抛出异常,有以下两种解决方法
//(1)取一条,加上限制条件
wrapper.last("LIMIT 1")
//(2)取第一条
//throwEx为true,则直接执行方法
//throwEx为false,在满足条件的多条记录里找到第一条数据直接返回
getOne(Wrapper queryWrapper, boolean throwEx)
//3、根据 Wrapper查询一条记录,返回Map集合
getMap(QueryWrapper<T> queryWrapper);
//4、根据条件查询总记录数,括号里不写就是无条件查询,返回int
count(QueryWrapper<T> queryWrapper);
//5、分页查询
//无条件分页查询,返回IPage<T>
page(IPage<T> page);
//条件分页查询,返回IPage<T>
page(IPage<T> page, QueryWrapper<T> queryWrapper);
二、新增
//新增一条记录(如何id为自增的,在新增数据后,id会自动返回到实体类中,实体类中原本没有数据的id就有了数据),返回int(新增的行数)
save(T entity);
//批量新增,返回int(新增的行数)
saveBatch(Collection<T> 实体类集合);
//批量新增,返回int(新增的行数)
saveBatch(Collection<T> 实体类集合, int 插入批次数量);
三、删除
//根据条件删除记录,返回int(删除的行数)
remove(QueryWrapper<T> queryWrapper);
//根据 id 删除,返回int(删除的行数)
removeById(Serializable id);
//根据ID 批量删除,返回int(删除的行数)
removeByIds(Collection<?> idList);
//根据 map 条件,删除记录,返回int(删除的行数)
removeByMap(Map<String, Object> map);
四、新增或修改
//根据id判断数据是否存在,存在则根据id修改,不存在或该实体类没有id数据,则修改,返回int(影响行数)
saveOrUpdate(T entity);
//批量修改或新增,id有值为修改,id无值为新增
saveOrUpdateBatch(Collection<T> entityList);