学习了springboot基础篇
跟着视频做了 注册接口和登陆接口,写了一个登陆的拦截器
搞了更新用户基本信息,用ThreadLocal对项目进行优化。
在实体类的成员变量上添加注解
- @NotNull(message = "不能为空")
- @NotEmpty(message = "不能为空且长度大于0")
- @mail(message = "邮箱格式")
接口方法的实体参数上添加@Validated注解 就可以对目标实体进行校验
- 先自定义注解,包含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 {};
}
- 自定义校验数据的类,要实现一下接口ConstraintValidator<State,String>,其中State,是注解,String是要校验的类型
- 再自定义的地方使用注解即可
使用前,要设置分页信息,第几页和每页多少个数目,会放到ThreadLocal变量中
PageHelper.startPage(pageNum,pageSize);
使用中,pageHelper会自动拦截到mybatis的sql语句,根据分页信息进行修改sql语句
#使用后会清除ThreadLocal变量
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从集合中移除