前言:这次ruoyi框架开发it管理系统,出现很多问题,也有学到很多东西,出现几个问题,希望下次项目不会出现或者少出现问题;其中还是有很多基础知识有些忘记,得多多复习
1:当写的代码没问题,但是当调用接口以后,后端返回缺少参数,或者路径有问题,一般都在于IDEA的缓存问题,解决方式也很简单,只需要在maven那里clear一下,然后刷新一下项目就能解决
2:数据库报错问题,当使用旧的数据库有问题,一般是数据库版本与可视化工具版本冲突,更改一下用新版本就行;
3:当使用ruoyi框架使用mybatis-plus分页查询时,报sql语句异常
版本冲突,只需要将ruoyi-common里的mybatis-plus依赖更换版本
4:当配置使用mybatis的小写包名搜索时,出现这个异常,前提redis已经开启
解决方法,是因为你的包中有个user实体类和ruoyi的user实体类名称相同,他就会扫描出两个类,只需要将自己的类名更改一下,不重复就行
5:当嵌套查询数据时,需要同时过滤两者被逻辑删除后的数据,例如此次的章节树查询,出现当我删除一个章下的小节时,在查询这个章节树会发现整个章也无法查到,原因是,我的过滤条件判断有问题,我之前的写法是直接同时过滤章和节的deal_flag都为0的情况下才能把数据查出来,但是这样过滤条件就会出现问题,解决方法,应该在节和章连接的on那里直接过滤加一个and 节的del_flag=0,这样就能解决问题
6:当数据库里有数据,且控制台的数据条数为数据库的数据条数,但是用文档和postman测试都无法测出完整数据时,出现的问题是,在xml文件中,标签使用错误,<id></id>标签只能使用于数据库中具有唯一性的数据,当你需要查询某个数据时,这个数据虽然也是id,但是他在数据库中,并不具有唯一性,就也不能使用id标签,而是得使用<result></result>标签
7:在ruoyi中想要开启日志
在admin下的resources文件下开启就行
8:为时间自动赋值,创建一个hander包,在里面配置如下代码:
package com.mashang.ruoyiit.handler;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import com.ruoyi.common.utils.SecurityUtils;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.context.annotation.Configuration;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.util.Date;
/**
* 触发操作 -- 自动添加时间、userId
*/
@Configuration
public class FieldHandler implements MetaObjectHandler {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
/**
* 添加时触发的操作
*
* @param metaObject
*/
@Override
public void insertFill(MetaObject metaObject) {
this.setFieldValByName("createTime", LocalDateTime.now(), metaObject);
this.setFieldValByName("updateTime", LocalDateTime.now(), metaObject);
this.setFieldValByName("createBy", SecurityUtils.getUsername(), metaObject);
this.setFieldValByName("updateBy", SecurityUtils.getUsername(), metaObject);
}
/**
* 更新时触发的操作
*
* @param metaObject
*/
@Override
public void updateFill(MetaObject metaObject) {
this.setFieldValByName("updateTime", LocalDateTime.now(), metaObject);
this.setFieldValByName("updateBy", SecurityUtils.getUsername(), metaObject);
}
}
数据库中的时间类型也需要更改为字符串类型;