Skip to content

Latest commit

 

History

History
104 lines (78 loc) · 3.38 KB

知识点.md

File metadata and controls

104 lines (78 loc) · 3.38 KB

学习日记

2025-01-10 ~ 2025-01-11

学习了springboot基础篇

2025-01-12 ~ 2025-01-13

跟着视频做了 注册接口和登陆接口,写了一个登陆的拦截器

2025-01-14 ~ 2025-01-15

搞了更新用户基本信息,用ThreadLocal对项目进行优化。

实体参数校验

在实体类的成员变量上添加注解

  • @NotNull(message = "不能为空")
  • @NotEmpty(message = "不能为空且长度大于0")
  • @mail(message = "邮箱格式")

接口方法的实体参数上添加@Validated注解 就可以对目标实体进行校验

自定义校验

  1. 先自定义注解,包含message,groups,payload,再往里面加入下面的注解
@Documented//元注解 到帮助文档
@Target(ElementType.FIELD)// 元注解,表示注解可以用到哪些地方
@Retention(RetentionPolicy.RUNTIME)//哪个阶段被保留
@Constraint(validatedBy = {StateValidation.class}) //谁来提供校验规则
public @interface State {
    //提供校验失败后的信息
    String message() default "State参数的值只能是[已发布|草稿]";
    //制定分组
    Class<?>[] groups() default {};
    //负载,获取到state注解的附加信息
    Class<? extends Payload>[] payload() default {};
}
  1. 自定义校验数据的类,要实现一下接口ConstraintValidator<State,String>,其中State,是注解,String是要校验的类型
  2. 再自定义的地方使用注解即可

pageHelper

使用前,要设置分页信息,第几页和每页多少个数目,会放到ThreadLocal变量中

PageHelper.startPage(pageNum,pageSize);

使用中,pageHelper会自动拦截到mybatis的sql语句,根据分页信息进行修改sql语句

#使用后会清除ThreadLocal变量

mybatis映射文件

MyBatis 框架中用于定义 SQL 映射语句的配置文件

注意放到resources目录下,并且下面的路径相同,名字也要一样才能映射 比如

src/main/resources/org/diverbee/mapper/ArticleMapper.xml

src/main/java/org/diverbee/mapper/ArticleMapper.java

一个例子这个xml会声明ArticleMapper的list方法的sql语句

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.diverbee.mapper.ArticleMapper">
<!--    动态sql-->
    <select id="list" resultType="org.diverbee.pojo.Article">
        select * from article
        <where>

            <if test="categoryId!=null">
                category_id = #{categoryId}
            </if>
            <if test="state!=null">
                and state = #{state}
            </if>
            and create_user = #{userid}
        </where>
    </select>
</mapper>

2025-01-17 关于文件上传,可以接受post过来的文件

    @PostMapping("/upload")
    public Result<String> upload(MultipartFile file);

用阿里云的OSS服务来实现对文件的存储,并且返回文件的url

2025-01-17 用redis优化了登陆,当一个账号登陆后之前的token主动失效

在redis里面创建 {username: token}的键值对,在登陆拦截器上先验证token是否已经失效

如果要实现多个用户同时在线,修改方向应该是:

redis里面存 {username:set}

登陆时候只需验证当前token是否在token集合中即可。

对于修改密码直接删除整个token集合,对于logout可以把当前的token从集合中移除