黑马程序员_JavaWeb开发笔记、常用注解以及day09实战部分代码
黑马程序员_JavaWeb开发笔记、常用注解以及day09实战部分代码
视频地址:
全网首发AI+JavaWeb开发入门,Tlias教学管理系统项目实战全套视频教程,从需求分析、设计、前后端开发、测试、程序优化到项目部署一套搞定_哔哩哔哩_bilibili
笔记:
官方的:概述 - 飞书云文档,除了笔记以外接口文档之类的也在这里面
实战代码遇到的问题与解决
一定要跟着接口文档写,一定!
clazz 部分
1.在添加弹窗那个班主任下拉框没有显示班主任选项
这个是因为在员工控制层没有写员工查询所有员工的方法,在这个下拉框是调用查询所有员工的方法,在视频里面没有写,但是接口2.6有,记得写
2.关于clazz的status这一栏的要求如何实现
- 当前时间 < 开课时间:未开课
- 当前时间 > 结课时间:已结课
- 否则:在读
大家发现要实现要求,但是呢,给我们的数据库表里面没有status这一栏。笔者一开始想的是我自己加一栏,然后add添加班级的时候就做个ifelse判断,然后把状态存进去,但是这样还是不对,因为状态是动态变化的,举个例子就是如果add的是明天的课,那么到明天的时候数据库里面还是放的未开课emm,所以得根据时间动态获得状态,而为啥实体类里面有status这个字段数据库里面没有呢?就是因为没必要往数据库里面存储,每次都是根据今天的日期实时计算的状态
这里提供一种写法:
1 | <select id="findPage" resultType="com.itheima.pojo.Clazz"> |
3.编写update时后端测试通过,数据库里面的数据也改了,但是前端点击编辑调用的却是add方法。。
这是因为没有实现前面通过id查找班级的接口,把这个实现之后点击编辑也有回显了,也可以正常修改了。。
课程全部代码地址
Darling-123456/AI_javaweb_tlias: AI_javaweb_tlias练手项目完整代码
用到的注解查看
自定义注解
@Log- 自定义日志注解,标记在方法上,用于统一记录操作日志(配合 AOP 使用)。
注解定义元注解
@Target(ElementType.METHOD)- 指定这个注解只能写在方法上(不能写在类、字段上)。@Retention(RetentionPolicy.RUNTIME)- 让这个注解在程序运行时也保留,这样才能通过反射读取到它。
Lombok 注解
@Data- 自动生成 getter/setter、toString、equals、hashCode 方法,省去手动编写。@NoArgsConstructor- 生成一个无参构造方法。@AllArgsConstructor- 生成一个包含所有字段的全参构造方法。@Slf4j- 在类里自动注入一个名为log的日志对象,可以直接写log.info("xxx")。
Spring Boot 核心注解
@SpringBootApplication- 标注在启动类上,是 Spring Boot 项目的入口,包含自动配置和组件扫描功能。@ServletComponentScan- 开启对 Servlet、Filter、Listener 等原生 Web 组件的扫描支持。@Configuration- 标注在配置类上,表示这个类里定义了 Spring 的 Bean 配置。@Component- 标注在普通类上,把这个类交给 Spring 容器管理,是最基础的组件注解。@Service- 标注在业务逻辑层(Service 层)的类上,交给 Spring 管理,并明确表示这是业务层。@Mapper- 标注在 MyBatis 的 Mapper 接口上,告诉 Spring 这是一个数据库操作的接口,需要生成代理对象。@RestController- 标注在控制器类上,表示这是前后端分离的控制器,所有方法默认返回 JSON 数据。@RestControllerAdvice- 标注在全局异常处理类上,可以统一捕获 Controller 层抛出的异常并统一返回格式。@ConfigurationProperties- 标注在配置类或字段上,用于将配置文件(application.yml)里的属性值绑定到 Java 对象上。
依赖注入注解
@Autowired- 自动注入 Spring 容器中的 Bean,通常写在字段上,由 Spring 自动赋值。
请求映射注解(Spring MVC)
@RequestMapping- 通用请求路径映射,可以标注在类或方法上,支持所有请求方式(GET/POST 等)。@GetMapping- 专门映射 GET 请求,等价于@RequestMapping(method = RequestMethod.GET)。@PostMapping- 专门映射 POST 请求,用于新增数据。@PutMapping- 专门映射 PUT 请求,用于修改数据。@DeleteMapping- 专门映射 DELETE 请求,用于删除数据。
参数绑定注解
@RequestBody- 接收请求体里的 JSON 数据(比如前端传来的对象),用于 POST/PUT 请求。@RequestParam- 取 URL 地址栏?号后面的参数(例如/depts?id=1)。@PathVariable- 取 URL 路径里{}包裹的部分(例如/depts/1中的1)。@DateTimeFormat- 指定字符串转日期时的格式,例如@DateTimeFormat(pattern = "yyyy-MM-dd")。
AOP 相关注解
@Aspect- 标注在切面类上,表示这是一个用于拦截方法的切面(AOP)类。@Around- 标注在切面方法上,表示这是一个环绕通知,可以在目标方法执行前/后/异常时执行自定义逻辑。@ExceptionHandler- 标注在方法上,用于处理指定类型的异常,通常和@RestControllerAdvice配合使用。
事务管理注解
@Transactional- 标注在方法或类上,表示该方法(或类中所有方法)要在事务中执行,异常时自动回滚。@Transactional(propagation = Propagation.REQUIRES_NEW)- 标注事务传播行为,表示无论当前是否有事务,都会新建一个独立事务运行。
MyBatis 注解
@Select- 标注在 Mapper 接口的方法上,直接写 SQL 的查询语句,无需 XML 文件。@Insert- 标注在 Mapper 接口的方法上,直接写 SQL 的插入语句。@Update- 标注在 Mapper 接口的方法上,直接写 SQL 的更新语句。@Delete- 标注在 Mapper 接口的方法上,直接写 SQL 的删除语句。@Options- 配置 MyBatis 操作的额外选项,比如开启主键回填(useGeneratedKeys = true)。@MapKey- 标注在查询方法上,将返回的 List 结果封装成 Map,指定某个字段作为 Key。
Servlet 注解
@WebFilter- 标注在过滤器类上,声明这是一个 Servlet 过滤器,并配置拦截路径(如urlPatterns = "/*")。
这样每个注解的作用都一目了然,方便你随时翻阅和记忆。😊
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Darlingの妙妙屋!
评论









