什么类型的网站容易被百度抓取,专业的深圳网页设计公司,国内免费代理ip地址和端口,信用公示信息系统(全国)目录 1. 常用易混淆注解解释1.1 Resource和Autowired注解的区别1.2 PathVariable和RequestParam注解的区别 2. Mybatis-Plus高级特性2.1 强大的通用CRUD接口2.2 代码生成器 3. IDEA实用快捷键4. 前后端联调关键点4.1 代码示例4.2 联调要点4.3 调试技巧 1. 常用易混淆注解解释
… 目录 1. 常用易混淆注解解释1.1 Resource和Autowired注解的区别1.2 PathVariable和RequestParam注解的区别 2. Mybatis-Plus高级特性2.1 强大的通用CRUD接口2.2 代码生成器 3. IDEA实用快捷键4. 前后端联调关键点4.1 代码示例4.2 联调要点4.3 调试技巧 1. 常用易混淆注解解释
1.1 Resource和Autowired注解的区别
在Spring框架中Resource和Autowired都是用于依赖注入的注解但有以下关键区别
特性AutowiredResource来源Spring框架Java标准(JSR-250)注入方式默认按类型(byType)默认按名称(byName)必需性默认必须(可设requiredfalse)非必须指定名称需配合Qualifier直接使用name属性构造函数注入支持不支持
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import javax.annotation.Resource;// 服务接口
interface PaymentService {void pay();
}// 实现类1
Service(wechatPay)
class WechatPay implements PaymentService {public void pay() {System.out.println(微信支付);}
}// 实现类2
Service(aliPay)
class AliPay implements PaymentService {public void pay() {System.out.println(支付宝支付);}
}// 客户端类
Service
class ShoppingCart {/* 最常用场景对比 */// 1. 按类型注入默认方式Autowired // Spring方式存在多个实现时会报错private PaymentService typeInjectedService;Resource // Java标准方式会退化成按名称注入变量名作为bean名称private PaymentService resourceInjectedService;// 2. 按名称注入解决多个实现问题AutowiredQualifier(wechatPay) // Spring方式需要两个注解private PaymentService qualifiedService;Resource(name aliPay) // Java标准方式一个注解搞定private PaymentService namedResourceService;// 3. 构造函数注入推荐方式private final PaymentService constructorInjected;Autowired // 唯一支持构造器注入的方式Spring 4.3可省略public ShoppingCart(PaymentService constructorInjected) {this.constructorInjected constructorInjected;}/* 实际使用示例 */public void checkout(int paymentType) {switch(paymentType) {case 1:qualifiedService.pay(); // 明确使用微信支付break;case 2:namedResourceService.pay(); // 明确使用支付宝break;default:constructorInjected.pay(); // 使用默认注入的实现}}
}1.2 PathVariable和RequestParam注解的区别
这两个注解都用于从HTTP请求中获取参数但使用场景不同
特性PathVariableRequestParam参数位置URL路径部分URL查询字符串示例URL/user/{id}/user?id123是否必需默认必需可选(可设requiredfalse)多值处理不支持支持(数组/集合)
// PathVariable 示例
GetMapping(/users/{userId})
public User getUser(PathVariable String userId) {// ...
}// RequestParam 示例
GetMapping(/users)
public User getUser(RequestParam(required false) String name) {// ...
}2. Mybatis-Plus高级特性
Mybatis-Plus在Mybatis基础上提供了诸多便利功能
2.1 强大的通用CRUD接口
内置通用Mapper无需编写简单SQL
分类方法示例说明插入insert(T entity)插入一条记录删除deleteById(Serializable id)根据ID删除deleteBatchIds()批量删除根据ID集合更新updateById(T entity)根据ID更新update(entity, wrapper)根据条件更新查询selectById()根据ID查询selectOne()查询一条记录结果多条会报错selectList()查询列表selectCount()查询总数分页selectPage()分页查询
2.2 代码生成器
一键生成Entity、Mapper、Service等 3. IDEA实用快捷键
功能Windows快捷键全局搜索Double Shift当前文件查找CtrlF在所有文件/模块/文件夹查找CtrlAltF代码格式化CtrlAltL重写方法CtrlO重写/实现方法CtrlIAI智能补全Tab输入表达式后使用此后缀快速生成变量.var
4. 前后端联调关键点
4.1 代码示例
// 正确示例 - 参数名与后端一致
methods: {deleteInterviewer(interviewerId) {...}).then(() {var params {interviewerId: interviewerId}deleteInterviewer: function(params) {return instance({url: /interviewer/delete,method: delete,params: params})
}后端接口
DeleteMapping(/delete)
public Result delete(RequestParam String interviewerId) {// 参数名必须与前端一致service.delete(interviewerId);return Result.ok();
}4.2 联调要点
命名一致性前后端参数名严格一致请求方式匹配 GET - 查询POST - 创建PUT - 更新DELETE - 删除 数据格式 明确约定JSON字段命名风格驼峰/下划线日期格式统一如yyyy-MM-dd HH:mm:ss
4.3 调试技巧
使用Postman测试接口 开启SpringBoot的SQL日志
mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl