1. 全局异常处理自定义异常处理。
这里用到了@ControllerAdvice注解,加了@ControllerAdvice的类为那些声明了(@ExceptionHandler、@InitBinder 或 @ModelAttribute注解修饰的)方法的类而提供的
专业化的@Component , 以供多个 Controller类所共享。
说白了,就是aop思想的一种实现,你告诉我需要拦截规则,我帮你把他们拦下来,具体你想做更细致的拦截筛选和拦截之后的处理,
你自己通过@ExceptionHandler、@InitBinder 或 @ModelAttribute这三个注解以及被其注解的方法来自定义。
2. 使用Swagger2进行接口文档编写时注意可以设置只显示api路径下的页面
3. 前后端分离开发时,先看前端中的路径与需要的参数,之后后端开发要与之对应。
4. 开发后调试时可以使用Swagger2进行,注意在项目中的包是有引用的,引用后的包同一路径的会整合到该路径的同一个包下,Springboot扫描时会扫描当前包和它的子包,如果扫描不到需要使用@ComponentScan手动引入。之后可以访问localhost:端口/doc.html进行访问调试。
5. 跨域问题,本质时浏览器对ajax请求的一种限制,即访问地址、IP地址和端口号如有不同就访问不到的情况。解决方法有在后端接口controller添加注解@CrossOrigin或使用网关。
6. MybatisPlus的简单使用
public interface RoleService extends IService<Role>{
IPage<Role> selectPage(Page<Role> pageParam, RoleQueryVo roleQueryVo);
}
@Service
public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements RoleService {
@Override
public IPage<Role> selectPage(Page<Role> pageParam, RoleQueryVo roleQueryVo) {
//获取条件值
String roleName = roleQueryVo.getRoleName();
//创建mp条件对象
LambdaQueryWrapper<Role> wrapper = new LambdaQueryWrapper<>();
//判断条件值是否为空,不为空则封装查询条件
if (!StringUtils.isEmpty(roleName)){
wrapper.like(Role::getRoleName,roleName);
}
//调用方法实现条件分页查询
IPage<Role> page = baseMapper.selectPage(pageParam, wrapper);
//返回分页对象
return page;
}
}
@Repository
public interface RoleMapper extends BaseMapper<Role>{
}
@Api(tags = "角色接口")
@RestController
@RequestMapping("/admin/acl/role")
@CrossOrigin
public class RoleController {
@Autowired
private RoleService roleService;
//1.角色列表(条件分页查询)
@ApiOperation("获取角色列表")
@GetMapping("/{page}/{limit}")
public Result index(@PathVariable Long page,
@PathVariable Long limit,
RoleQueryVo roleQueryVo){
//生成page对象,传递当前页和每页记录数
Page<Role> pageParam = new Page<>(page,limit);
//调用service方法实现条件分类查询,返回分页对象
IPage<Role> iPage = roleService.selectPage(pageParam, roleQueryVo);
return Result.ok(iPage);
}
//2 根据id查询角色
//3 添加角色
//4 修改角色
//5 根据id删除角色
//6 批量删除角色
}