1. 在往数据库里添加一行数据,而没有指定id的时候(因为数据库中设置了id自增,所以添加的时候选择了不添加id),运行SpringBoot项目的时候报错:
ested exception is org.apache.ibatis.reflection.ReflectionException: Could not set property 'id' of 'class com.example.domain.Book' with value '1630608189923823618'
原因:Mybatis-plus默认生成id的策略是由它自己指定的,用的是雪花算法。我们则需要使用数据库的id自增策略。
解决方法:在application.yml中指定即可:id-type:auto
2. Springboot使用mabatis-plus往数据库插入数据的时候中文出现???乱码。
解决方法一:在url路径后面添加:useUnicode=true&characterEncoding=utf8
(如果还未解决则继续使用方法二)
解决方法二:在IEDA中选择file->setting->editor->code style->file encodings都改为utf-8 ,并且勾上选项。(如果还未解决则继续使用方法三)
解决方法三:找到数据库安装路径下的my.ini文件,将第66行和第99行的#号去掉(每个人行数位置可能不同),并且改为下面样式。然后重启MySQL即可(从计算机–服务–MySQL80重启也可以),命令行重启(需要使用管理员身份运行)也可以(启动:net start mysql 80 停止:net stop mysql80)
3.使用MyBatis-plus报错数据库属性名xxx_xxx不存在
知识点:mybatis-plus采用的是驼峰命名法。
所以默认情况下 mybatis-plus会自动将实体类的属性名中的 大写字母 变成 小写 并加上 下换线_ (last_name)当做数据库表字段
解决办法:
1. 将数据库中的属性名改为下划线的样式
2. 为每个实体类单独指定字段名
@Data
@TableName("stu_employee")
public class Employee {
@TableField(value = "isAdmin")
private String isAdmin;
}
- 修改配置文件,关闭驼峰命名法:
#在springboot的yml配置文件中配置
mybatis-plus:
configuration:
map-underscore-to-camel-case: false
4. vue前端访问后端报错:net::ERR_FAILED 200
问题分析:
由于后端打印了日志表明前端的访问没有错,问题出在后端。
即为前端可以把数据发送到后端,后端能接收到也能操作,但是后端无法将数据发送出去,经过资料查询说明是后端未加跨域的response相应。
解决办法:
新建一个类GlobalCorsConfig.java实现全局跨域
package com.sf.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;
import java.util.ArrayList;
import java.util.List;
/**
* 全局跨域配置
*/
@Configuration
public class GlobalCorsConfig {
/**
* 允许跨域调用的过滤器
*/
@Bean
public CorsFilter corsFilter() {
//1. 添加 CORS配置信息
CorsConfiguration config = new CorsConfiguration();
// 放行哪些原始域
config.addAllowedOrigin("*");
// 是否发送 Cookie
List<String> list = new ArrayList<>();
list.add("*");
config.setAllowedOriginPatterns(list);
// 放行哪些请求方式
config.addAllowedMethod("*");
// 放行哪些原始请求头部信息
config.addAllowedHeader("*");
// 暴露哪些头部信息
config.addExposedHeader("*");
//2. 添加映射路径
UrlBasedCorsConfigurationSource corsConfigurationSource = new UrlBasedCorsConfigurationSource();
corsConfigurationSource.registerCorsConfiguration("/**",config);
//3. 返回新的CorsFilter
return new CorsFilter(corsConfigurationSource);
}
}
5. SpringBoot报错ERROR org.springframework.boot.SpringApplication – Application run failed
- 报错信息:当有Input length = 1时,经过各种查询,说明是我不知道什么时候点击到了更改.yml文件字符为GBK,修改过来就可以了
- 报错信息:当有Input length = 2时,因为修改的时候不小心把Default encoding for properties files修改为了UTF-8。
解决办法:将字符修改为如下样式,就能正常跑了。