1.创建一个maven项目,配置pom文件,
2.新建application.yml文件,配置端口号,数据源,mabatis映射(开启驼峰映射),开启debug日志级别,设置密码加密盐值,
3.新建一个流程,查询指定id,测试是否可以连接数据库,
UserController :
完成的业务: 1.登录,预留位置,将登录的信息存放到redis,修改
2.注册,将信息存放到mysql
3.修改用户信息 用户昵称,用户性别,用户邮箱,用户电话,用户身份(学生,
教师),
4.注销用户--将给用户状态信息改为下线
5.上传用户头像,先单独拆开,再合并到修改信息--上传图像
6.完成前端输入数据的校验(后端校验)
7.密码的加密
8.统一异常处理机制
项目遇到的问题1: 无法加载自定义的配置信息,
解决方案:1直接设置为固定值,2,在Service层使用value注解调用工具类的方法,获取值
问题2:无法使用@Validated注解
问题原因:新版本需要添加依赖,来开启注解配置器
解决方案:在pom文件中添加依赖
<!--开启数据校验--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency>
问题3:数据校验,有多个数据校验异常,而且抛出异常,不通过统一异常处理机制,msg消息过长,无用信息过多
解决方案:1.简易化处理,直接返回数据校验异常,2.精细化处理,正在查询资料
问题4:分页查询用户列表时,将用户密码等不能返回的信息返回了
解决方案:百度查询条件构造器的使用,mybatis-plus默认查询所有实体类字段
1.返回指定字段,使用select来指定返回字段
@Test
public void selectByWrapper10() {
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.select("name", "age").like("name", "雨");
List<User> users = userMapper.selectList(queryWrapper);
users.forEach(System.out::println);
}
2.指定那些不返回,默认为全部返回
@Test
public void selectByWrapper11() {
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.select(User.class, info -> !info.getColumn().equals("manager_id")
&& !info.getColumn().equals("create_time"));
List<User> users = userMapper.selectList(queryWrapper);
users.forEach(System.out::println);
}
解决方案:修改条件筛选器,将用户密码,用户修改时间设置为不返回 --
处理结果:只返回了用户id和用户名,其他的全部返回为空,仔细检查后发现,数据库全是null值,手动添加后,能成功达到预期目标
LogController : 业务目标:
1.使用aop方式实现redis缓存数据,将日志存储到redis,
2.实现登录模块的redis连接,登录后返回一个token信息,并将token信息存储到redis,再存储到mysql,登录时先查本地缓存,没有的话访问redis,redis也没有就查询
预期使用:redisTemplate docker
业务流程:1。配置pom文件
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> <version>2.5.4</version> </dependency>
由于使用日志系统,在启动类上,添加开启异步注解@EnableAsync