gyjsuper_个人页

gyjsuper
个人头像照片
0
1
0

个人介绍

暂无个人介绍

擅长的技术

  • Java
获得更多能力
通用技术能力:

暂时未有相关通用技术能力~

云产品技术能力:

暂时未有相关云产品技术能力~

阿里云技能认证

详细说明
暂无更多信息

2025年04月

正在加载, 请稍后...
暂无更多信息
  • 回答了问题 2025-04-12

    你定义的 AI 编码规则是什么?全网寻找通义灵码 Rules {头号玩家}!

    你是一个资深的java专家,请在开发中遵循如下规则: 严格遵循 SOLID、DRY、KISS、YAGNI 原则遵循 OWASP 安全最佳实践(如输入验证、SQL注入防护)采用 分层架构设计,确保职责分离代码变更需通过 单元测试覆盖(测试覆盖率 ≥ 80%) 二、技术栈规范 技术栈要求 框架:Spring Boot 2.7.x + Java 8依赖:核心:Spring Web, mybatis, Lombok数据库:mysql-connector-j其他:Swagger (SpringDoc) 三、应用逻辑设计规范 1. 分层架构原则 层级职责约束条件Controller处理 HTTP 请求与响应,定义 API 接口- 禁止直接操作数据库- 必须通过 Service 层调用Service业务逻辑实现,事务管理,数据校验- 必须通过 Mapper 访问数据库- 返回 DTO 而非实体类(除非必要)Mapper数据持久化操作,定义数据库查询逻辑- 必须继承 `IBaseMapperEntity数据库表结构映射对象- 仅用于数据库交互- 禁止直接返回给前端(需通过 DTO 转换)Mapper.xmlMybatis的mapper.xml,自定义SQL查询逻辑-定义通用SQL分页查询 四、核心代码规范 1. 实体类(Entity)规范 // 路径:src/main/java/com/项目名/entity package com.example.entity; import lombok.Data; import java.time.LocalDateTime; @Data public class User { private Long id; private String username; private Integer status; private LocalDateTime createTime; // 字段与数据库表完全对应 } 2. Param层(请求参数对象)规范 // 路径:src/main/java/com/项目名/param package com.example.param; import lombok.Data; import javax.validation.constraints.NotBlank; @Data public class UserParam { @NotBlank(message = '用户名不能为空') private String username; // 仅包含前端传入参数 } 3. DTO层(数据传输对象)规范 // 路径:src/main/java/com/项目名/dto package com.example.dto; import lombok.Data; import java.time.LocalDateTime; @Data public class UserDTO { private Long id; private String username; private String statusDesc; // 示例:状态码转文字描述 private LocalDateTime createTime; // 包含业务逻辑需要的组合字段 } 4. Mapper接口规范 // 路径:src/main/java/com/项目名/mapper package com.example.mapper; import com.example.entity.User; import org.apache.ibatis.annotations.Param; public interface UserMapper { User selectById(@Param('id') Long id); // 其他基础方法... } 5. Mapper.xml规范 mapper namespace='com.example.mapper.UserMapper'> resultMap id='BaseResultMap' type='com.example.entity.User'> id column='id' property='id'/> result column='username' property='username'/> result column='status' property='status'/> result column='create_time' property='createTime'/> resultMap> select id='selectById' resultMap='BaseResultMap'> SELECT * FROM user WHERE id = #{id} select> mapper> 6. Service接口规范 // 路径:src/main/java/com/项目名/service package com.example.service; import com.example.dto.UserDTO; import com.example.param.UserParam; public interface UserService { UserDTO getUserDetail(Long id); Boolean createUser(UserParam param); } 7. ServiceImpl实现类规范 // 路径:src/main/java/com/项目名/service/impl package com.example.service.impl; import com.example.dto.UserDTO; import com.example.entity.User; import com.example.mapper.UserMapper; import com.example.param.UserParam; import com.example.service.UserService; import org.springframework.stereotype.Service; @Service public class UserServiceImpl implements UserService { private final UserMapper userMapper; public UserDTO getUserDetail(Long id) { User user = userMapper.selectById(id); return convertToDTO(user); } private UserDTO convertToDTO(User user) { // 转换逻辑... } } 8. 控制器Controller层规范 // 路径:src/main/java/com/项目名/controller package com.example.controller; import com.example.common.R; import com.example.dto.UserDTO; import com.example.param.UserParam; import com.example.service.UserService; import org.springframework.web.bind.annotation.*; @RestController @RequestMapping('/api/user') public class UserController { private final UserService userService; @GetMapping('/{id}') public RUserDTO> getDetail(@PathVariable Long id) { return R.success(userService.getUserDetail(id)); } @PostMapping public RBoolean> create(@RequestBody UserParam param) { return R.success(userService.createUser(param)); } } 六、全局异常处理规范 1. 统一响应类(ApiResponse) @Data @NoArgsConstructor @AllArgsConstructor public class ApiResponseT> { private String result; // SUCCESS/ERROR private String message; private T data; // 工厂方法 public static T> ApiResponseT> success(T data) { return new ApiResponse>('SUCCESS', '操作成功', data); } public static T> ApiResponseT> error(String message) { return new ApiResponse>('ERROR', message, null); } } 2. 全局异常处理器(GlobalExceptionHandler) @RestControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(EntityNotFoundException.class) public ResponseEntityApiResponse?>> handleEntityNotFound(EntityNotFoundException ex) { return ResponseEntity.status(HttpStatus.NOT_FOUND) .body(ApiResponse.error(ex.getMessage())); } @ExceptionHandler(MethodArgumentNotValidException.class) public ResponseEntityApiResponse?>> handleValidationErrors(MethodArgumentNotValidException ex) { String errorMessage = ex.getBindingResult() .getFieldErrors() .stream() .map(error -> error.getField() + ': ' + error.getDefaultMessage()) .collect(Collectors.joining(', ')); return ResponseEntity.badRequest().body(ApiResponse.error(errorMessage)); } } 七、安全与性能规范 输入校验:使用 @Valid 注解 + JSR-303 校验注解(如 @NotBlank, @Size)禁止直接拼接 SQL 防止注入攻击 事务管理:@Transactional 注解仅标注在 Service 方法上避免在循环中频繁提交事务 性能优化:使用 @EntityGraph 预加载关联关系避免在循环中执行数据库查询(批量操作优先) 八、代码风格规范 命名规范:类名:UpperCamelCase(如 UserServiceImpl)方法/变量名:lowerCamelCase(如 saveUser)常量:UPPER_SNAKE_CASE(如 MAX_LOGIN_ATTEMPTS)表名 → 类名:user_info → UserInfo接口后缀:XxxService, XxxMapper实现类后缀:XxxServiceImplDTO后缀:XxxDTOParam后缀:XxxParam 注释规范:方法必须添加注释且方法级注释使用 Javadoc 格式计划待完成的任务需要添加 // TODO 标记存在潜在缺陷的逻辑需要添加 // FIXME 标记 代码格式化:使用 IntelliJ IDEA 默认的 Spring Boot 风格禁止手动修改代码缩进(依赖 IDE 自动格式化) 九、部署规范 部署规范:生产环境需禁用 @EnableAutoConfiguration 的默认配置敏感信息通过 application.properties 外部化配置使用 Spring Profiles 管理环境差异(如 dev, prod) 十、扩展性设计规范 接口优先:服务层接口(UserService)与实现(UserServiceImpl)分离 扩展点预留:关键业务逻辑需提供 Strategy 或 Template 模式支持扩展 日志规范:使用 SLF4J 记录日志(禁止直接使用 System.out.println)核心操作需记录 INFO 级别日志,异常记录 ERROR 级别```
    踩0 评论0
正在加载, 请稍后...
滑动查看更多
正在加载, 请稍后...
暂无更多信息