本课程开发软件与项目初始代码可以通过云盘下载,答疑服务可以关注视频片头的二维码获取。
https://www.123912.com/s/A75eVv-27mod,提取码:yton
教学视频
上节课我们实现了修改用户密码,这节课我们继续来完成用户管理模块。比如管理界面中的部门列表和角色列表需要显示数据,这节课我们写后端代码把相关数据查询出来。
大家认真观看视频,不要快进。有些操作只在视频中演示,只对着手册操作并不能完成案例,切记!
一、编写hxoa-oms
子系统
1. 编写持久层
在RoleMapper.xml
文件中编写SQL语句,查询所有角色。
<select id="searchAllRole" resultType="HashMap">
SELECT id, name
FROM tb_role
ORDER BY name
</select>
在com.example.hxoa.cloud.oms.db.dao
包RoleMapper.java
接口中,声明DAO方法。
public interface RoleMapper {
……
public ArrayList<HashMap> searchAllRole();
}
在DeptMapper.xml
文件中编写SQL语句,查询所有部门。
<select id="searchAllDept" resultType="HashMap">
SELECT id, name
FROM tb_dept
</select>
在com.example.hxoa.cloud.oms.db.dao
包DeptMapper.java
接口中,声明DAO方法。
public interface DeptMapper {
public ArrayList<HashMap> searchAllDept();
}
2. 编写Dubbo层
在com.example.hxoa.cloud.dubbo
包RoleApi.java
接口中,声明抽象方法。
public interface RoleApi {
public R searchAllRole();
}
在com.example.hxoa.cloud.dubbo
包RoleApiHandler.java
类中,实现抽象方法方法。
@DubboService
@Slf4j
public class RoleApiHandler implements RoleApi {
@Resource
private RoleMapper roleMapper;
@Override
@SentinelResource("RoleApiHandler.searchAllRole")
public R searchAllRole() {
ArrayList list = roleMapper.searchAllRole();
return R.ok().setAttributeAll(
new HashMap() {{
put("status", "SUCCESS");
put("roleList", list);
}});
}
}
在com.example.hxoa.cloud.dubbo
包DeptApi.java
接口中,声明抽象方法。
public interface DeptApi {
public R searchAllDept();
}
在com.example.hxoa.cloud.oms.api
包DeptApiHandler.java
类中,实现抽象方法。
@DubboService
@Slf4j
public class DeptApiHandler implements DeptApi {
@Resource
private DeptMapper deptMapper;
@Override
@SentinelResource("DeptApiHandler.searchAllDept")
public R searchAllDept() {
ArrayList list = deptMapper.searchAllDept();
return R.ok().setAttributeAll(
new HashMap() {{
put("status", "SUCCESS");
put("deptList", list);
}});
}
}
二、编写hxoa-mis
子系统
1. 编写Dubbo层
在com.example.hxoa.cloud.dubbo
包RoleApi.java
接口中,声明抽象方法。
public interface RoleApi {
public R searchAllRole();
}
在com.example.hxoa.cloud.dubbo
包DeptApi.java
接口中,声明抽象方法。
public interface DeptApi {
public R searchAllDept();
}
2. 编写业务层
在com.example.hxoa.cloud.mis.service
包RoleService.java
接口中,声明抽象方法。
public interface RoleService {
public Map searchAllRole();
}
在com.example.hxoa.cloud.mis.service.impl
包RoleServiceImpl.java
类中,实现抽象方法。
@Service
public class RoleServiceImpl implements RoleService {
@DubboReference
private RoleApi roleApi;
@Override
public Map searchAllRole() {
R r = roleApi.searchAllRole();
Map result = r.getAttributeAll();
return result;
}
}
在com.example.hxoa.cloud.mis.service
包DeptService.java
接口中,声明抽象方法。
public interface DeptService {
public Map searchAllDept();
}
在com.example.hxoa.cloud.mis.service.impl
包DeptServiceImpl.java
类中,实现抽象方法。
@Service
public class DeptServiceImpl implements DeptService {
@DubboReference
private DeptApi deptApi;
@Override
public Map searchAllDept() {
R r = deptApi.searchAllDept();
Map result = r.getAttributeAll();
return result;
}
}
3. 编写Web层
在com.example.hxoa.cloud.mis.controller
包RoleController.java
类中,声明Web方法。
@RestController
@RequestMapping("/role")
public class RoleController {
@Resource
private RoleService roleService;
@GetMapping("/search-all-role")
@SaCheckLogin
@SentinelResource("RoleController.searchAllRole")
public R searchAllRole() {
Map result = roleService.searchAllRole();
return R.ok().setAttributeAll(result);
}
}
在com.example.hxoa.cloud.mis.controller
包DeptController.java
类中,声明Web方法。
@RestController
@RequestMapping("/dept")
public class DeptController {
@Resource
private DeptService deptService;
@GetMapping("/search-all-dept")
@SaCheckLogin
@SentinelResource("DeptController.searchAllDept")
public R searchAllDept() {
Map result = deptService.searchAllDept();
return R.ok().setAttributeAll(result);
}
}