mybatis-plus的实际运用
-
首先简单的介绍一下需求:
-
用户表
-
部门表
-
用户:部门 = 1:1;部门:用户 = 1:n
-
要求:在有筛选条件的时候按照筛选条件查询用户列表;没有筛选条件时就查询所有。用户表里面只有部门的id(org_id),查询结果需要返回部门的名称;所以在设计表的时候就多留了一个字段 存放部门的名称(临时存放);这个需求如果是用自定义的sql很好的实现;但是用mybatis-plus实现起来对于小编一个刚接触mybatis-plus还是非常的有挑战的。
-
请看代码:附有注释
public ResponseResult listuserByorgnameandusername(@JsonParam("page") Page<UserInfo> page,String userName,String orgName) {
//部门名称查询项目部门id
List<String> listOrgId = new ArrayList<>();
if(!StringUtils.isEmpty(orgName)){
QueryWrapper<OrgInfo> orgInfoQueryWrapper = new QueryWrapper<>();
orgInfoQueryWrapper.like("f_iu_fullname",orgName);
List<OrgInfo> listOrg = orgInfoService.list(orgInfoQueryWrapper);
if(!listOrg.isEmpty()){
for (OrgInfo orgInfo : listOrg) {
listOrgId.add(orgInfo.getOrgId());
}
}
}
QueryWrapper<UserInfo> userInfoQueryWrapper = new QueryWrapper<>();
if(!StringUtils.isEmpty(userName)){
userInfoQueryWrapper.like("f_user_name",userName);
}
//添加部门筛选条件
if(!listOrgId.isEmpty()){
userInfoQueryWrapper.inOrThrow("f_org_id", listOrgId);
}
IPage<UserInfo> userInfoList= userInfoService.page(page,userInfoQueryWrapper);
//设置部门名称
for (UserInfo userInfo : userInfoList.getRecords()) {
OrgInfo orgInfo = orgInfoMapper.selectById(userInfo.getOrgId());
if(null!=orgInfo){
userInfo.setDepartment(orgInfo.getIuFullname());
}
}
//不返回部门其他信息,用户表里面有部门编号和部门名称设置一下值就可以了
return ResponseResult.success(userInfoList);
}
就这样 利用mybatis-plus实现了本该多表操作的 转换成了单表;这样写代码的效率也提高了;
mybatis-plus快速入门学习