
`User` 实体类 中的 `id` 字段是 **基本类型 `int`,建议使用包装类型 `Integer`。
这样可以让 SQL 语句打印出来,方便调试。这样 MyBatis-Plus。MyBatis运行时报错。x修改完成,确实不报错了。
·
MyBatis运行时报错
"C:\Program Files\Java\jdk1.8.0_152\bin\java.exe" -XX:TieredStopAtLevel=1 -noverify -Dspring.output.ansi.enabled=always -Dcom.sun.management.jmxremote -Dspring.jmx.enabled=true -Dspring.liveBeansView.mbeanDomain -Dspring.application.admin.enabled=true "-javaagent:D:\IntelliJ IDEA 2022.2\lib\idea_rt.jar=54897:D:\IntelliJ IDEA 2022.2\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.8.0_152\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\rt.jar;C:\Users\20120\Desktop\xkly\target\classes;D:\maven-repository\org\springframework\boot\spring-boot-starter-web\2.4.5\spring-boot-starter-web-2.4.5.jar;D:\maven-repository\org\springframework\boot\spring-boot-starter\2.4.5\spring-boot-starter-2.4.5.jar;D:\maven-repository\org\springframework\boot\spring-boot\2.4.5\spring-boot-2.4.5.jar;D:\maven-repository\org\springframework\boot\spring-boot-starter-logging\2.4.5\spring-boot-starter-logging-2.4.5.jar;D:\maven-repository\ch\qos\logback\logback-classic\1.2.3\logback-classic-1.2.3.jar;D:\maven-repository\ch\qos\logback\logback-core\1.2.3\logback-core-1.2.3.jar;D:\maven-repository\org\apache\logging\log4j\log4j-to-slf4j\2.13.3\log4j-to-slf4j-2.13.3.jar;D:\maven-repository\org\apache\logging\log4j\log4j-api\2.13.3\log4j-api-2.13.3.jar;D:\maven-repository\org\slf4j\jul-to-slf4j\1.7.30\jul-to-slf4j-1.7.30.jar;D:\maven-repository\jakarta\annotation\jakarta.annotation-api\1.3.5\jakarta.annotation-api-1.3.5.jar;D:\maven-repository\org\yaml\snakeyaml\1.27\snakeyaml-1.27.jar;D:\maven-repository\org\springframework\boot\spring-boot-starter-json\2.4.5\spring-boot-starter-json-2.4.5.jar;D:\maven-repository\com\fasterxml\jackson\core\jackson-databind\2.11.4\jackson-databind-2.11.4.jar;D:\maven-repository\com\fasterxml\jackson\core\jackson-annotations\2.11.4\jackson-annotations-2.11.4.jar;D:\maven-repository\com\fasterxml\jackson\core\jackson-core\2.11.4\jackson-core-2.11.4.jar;D:\maven-repository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.11.4\jackson-datatype-jdk8-2.11.4.jar;D:\maven-repository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.11.4\jackson-datatype-jsr310-2.11.4.jar;D:\maven-repository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.11.4\jackson-module-parameter-names-2.11.4.jar;D:\maven-repository\org\springframework\boot\spring-boot-starter-tomcat\2.4.5\spring-boot-starter-tomcat-2.4.5.jar;D:\maven-repository\org\apache\tomcat\embed\tomcat-embed-core\9.0.45\tomcat-embed-core-9.0.45.jar;D:\maven-repository\org\glassfish\jakarta.el\3.0.3\jakarta.el-3.0.3.jar;D:\maven-repository\org\apache\tomcat\embed\tomcat-embed-websocket\9.0.45\tomcat-embed-websocket-9.0.45.jar;D:\maven-repository\org\springframework\spring-web\5.3.6\spring-web-5.3.6.jar;D:\maven-repository\org\springframework\spring-beans\5.3.6\spring-beans-5.3.6.jar;D:\maven-repository\org\springframework\spring-webmvc\5.3.6\spring-webmvc-5.3.6.jar;D:\maven-repository\org\springframework\spring-aop\5.3.6\spring-aop-5.3.6.jar;D:\maven-repository\org\springframework\spring-context\5.3.6\spring-context-5.3.6.jar;D:\maven-repository\org\springframework\spring-expression\5.3.6\spring-expression-5.3.6.jar;D:\maven-repository\org\projectlombok\lombok\1.18.20\lombok-1.18.20.jar;D:\maven-repository\org\slf4j\slf4j-api\1.7.30\slf4j-api-1.7.30.jar;D:\maven-repository\org\springframework\spring-core\5.3.6\spring-core-5.3.6.jar;D:\maven-repository\org\springframework\spring-jcl\5.3.6\spring-jcl-5.3.6.jar;D:\maven-repository\mysql\mysql-connector-java\8.0.23\mysql-connector-java-8.0.23.jar;D:\maven-repository\com\baomidou\mybatis-plus-boot-starter\3.4.2\mybatis-plus-boot-starter-3.4.2.jar;D:\maven-repository\com\baomidou\mybatis-plus\3.4.2\mybatis-plus-3.4.2.jar;D:\maven-repository\com\baomidou\mybatis-plus-extension\3.4.2\mybatis-plus-extension-3.4.2.jar;D:\maven-repository\com\baomidou\mybatis-plus-core\3.4.2\mybatis-plus-core-3.4.2.jar;D:\maven-repository\com\baomidou\mybatis-plus-annotation\3.4.2\mybatis-plus-annotation-3.4.2.jar;D:\maven-repository\com\github\jsqlparser\jsqlparser\4.0\jsqlparser-4.0.jar;D:\maven-repository\org\mybatis\mybatis\3.5.6\mybatis-3.5.6.jar;D:\maven-repository\org\mybatis\mybatis-spring\2.0.5\mybatis-spring-2.0.5.jar;D:\maven-repository\org\springframework\boot\spring-boot-autoconfigure\2.4.5\spring-boot-autoconfigure-2.4.5.jar;D:\maven-repository\org\springframework\boot\spring-boot-starter-jdbc\2.4.5\spring-boot-starter-jdbc-2.4.5.jar;D:\maven-repository\com\zaxxer\HikariCP\3.4.5\HikariCP-3.4.5.jar;D:\maven-repository\org\springframework\spring-jdbc\5.3.6\spring-jdbc-5.3.6.jar;D:\maven-repository\org\springframework\spring-tx\5.3.6\spring-tx-5.3.6.jar" com.example.xkly.XklyApplication
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.4.5)
2025-02-02 21:26:51.703 INFO 7060 --- [ main] com.example.xkly.XklyApplication : Starting XklyApplication using Java 1.8.0_152 on xyt with PID 7060 (C:\Users\20120\Desktop\xkly\target\classes started by 20120 in C:\Users\20120\Desktop\xkly)
2025-02-02 21:26:51.706 INFO 7060 --- [ main] com.example.xkly.XklyApplication : No active profile set, falling back to default profiles: default
2025-02-02 21:26:52.659 INFO 7060 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
2025-02-02 21:26:52.667 INFO 7060 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2025-02-02 21:26:52.667 INFO 7060 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.45]
2025-02-02 21:26:52.756 INFO 7060 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2025-02-02 21:26:52.756 INFO 7060 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1002 ms
2025-02-02 21:26:52.932 INFO 7060 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
_ _ |_ _ _|_. ___ _ | _
| | |\/|_)(_| | |_\ |_)||_|_\
/ |
3.4.2
2025-02-02 21:26:54.264 WARN 7060 --- [ main] c.b.m.core.metadata.TableInfoHelper : This primary key of "id" is primitive !不建议如此请使用包装类 in Class: "com.example.xkly.User"
2025-02-02 21:26:54.496 INFO 7060 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
2025-02-02 21:26:54.507 INFO 7060 --- [ main] com.example.xkly.XklyApplication : Started XklyApplication in 3.169 seconds (JVM running for 4.58)
这个警告的意思是:
你的 User
实体类 中的 id
字段是 基本类型 int
,建议使用包装类型 Integer
。
✅ 解决方案
1️⃣ 修改 User
实体类
📌 错误写法 (使用基本类型 int
):
public class User {
private int id; // ❌ 不建议使用基本类型
private String name;
private String email;
}
✅ 正确写法 (使用包装类型 Integer
)
package com.example.xkly.entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@Data
@TableName("user") // 指定数据库表名
public class User {
@TableId // 指定主键
private Integer id; // ✅ 使用 Integer 避免 MyBatis-Plus 警告
private String name;
private String email;
}
2️⃣ 为什么要用 Integer
而不是 int
?
类型 | 区别 |
---|---|
int (基本类型) | 不能为 null ,如果数据库 id 为空,可能导致 NullPointerException |
Integer (包装类) | 可以为 null ,更符合 MyBatis-Plus 设计 |
- 如果数据库
id
是自增主键,插入数据时id
可能是null
,但int
不能为null
,所以会出错。 Integer
更符合 MyBatis-Plus 规范,它默认支持null
值,避免不必要的错误。
3️⃣ 其他检查项
✅ 确保 UserMapper.java
继承 BaseMapper<User>
package com.example.xkly.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.xkly.entity.User;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface UserMapper extends BaseMapper<User> {
}
✅ 确保 application.yml
正确
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
这样可以让 SQL 语句打印出来,方便调试。
🎯 结论
- ⚠️ 错误:
private int id;
- ✅ 正确:
private Integer id;
- 重新运行
mvn clean package
,警告就会消失!
这样 MyBatis-Plus 就不会报警告了 🚀
x修改完成,确实不报错了
"C:\Program Files\Java\jdk1.8.0_152\bin\java.exe" -XX:TieredStopAtLevel=1 -noverify -Dspring.output.ansi.enabled=always -Dcom.sun.management.jmxremote -Dspring.jmx.enabled=true -Dspring.liveBeansView.mbeanDomain -Dspring.application.admin.enabled=true "-javaagent:D:\IntelliJ IDEA 2022.2\lib\idea_rt.jar=55518:D:\IntelliJ IDEA 2022.2\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.8.0_152\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\rt.jar;C:\Users\20120\Desktop\xkly\target\classes;D:\maven-repository\org\springframework\boot\spring-boot-starter-web\2.4.5\spring-boot-starter-web-2.4.5.jar;D:\maven-repository\org\springframework\boot\spring-boot-starter\2.4.5\spring-boot-starter-2.4.5.jar;D:\maven-repository\org\springframework\boot\spring-boot\2.4.5\spring-boot-2.4.5.jar;D:\maven-repository\org\springframework\boot\spring-boot-starter-logging\2.4.5\spring-boot-starter-logging-2.4.5.jar;D:\maven-repository\ch\qos\logback\logback-classic\1.2.3\logback-classic-1.2.3.jar;D:\maven-repository\ch\qos\logback\logback-core\1.2.3\logback-core-1.2.3.jar;D:\maven-repository\org\apache\logging\log4j\log4j-to-slf4j\2.13.3\log4j-to-slf4j-2.13.3.jar;D:\maven-repository\org\apache\logging\log4j\log4j-api\2.13.3\log4j-api-2.13.3.jar;D:\maven-repository\org\slf4j\jul-to-slf4j\1.7.30\jul-to-slf4j-1.7.30.jar;D:\maven-repository\jakarta\annotation\jakarta.annotation-api\1.3.5\jakarta.annotation-api-1.3.5.jar;D:\maven-repository\org\yaml\snakeyaml\1.27\snakeyaml-1.27.jar;D:\maven-repository\org\springframework\boot\spring-boot-starter-json\2.4.5\spring-boot-starter-json-2.4.5.jar;D:\maven-repository\com\fasterxml\jackson\core\jackson-databind\2.11.4\jackson-databind-2.11.4.jar;D:\maven-repository\com\fasterxml\jackson\core\jackson-annotations\2.11.4\jackson-annotations-2.11.4.jar;D:\maven-repository\com\fasterxml\jackson\core\jackson-core\2.11.4\jackson-core-2.11.4.jar;D:\maven-repository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.11.4\jackson-datatype-jdk8-2.11.4.jar;D:\maven-repository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.11.4\jackson-datatype-jsr310-2.11.4.jar;D:\maven-repository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.11.4\jackson-module-parameter-names-2.11.4.jar;D:\maven-repository\org\springframework\boot\spring-boot-starter-tomcat\2.4.5\spring-boot-starter-tomcat-2.4.5.jar;D:\maven-repository\org\apache\tomcat\embed\tomcat-embed-core\9.0.45\tomcat-embed-core-9.0.45.jar;D:\maven-repository\org\glassfish\jakarta.el\3.0.3\jakarta.el-3.0.3.jar;D:\maven-repository\org\apache\tomcat\embed\tomcat-embed-websocket\9.0.45\tomcat-embed-websocket-9.0.45.jar;D:\maven-repository\org\springframework\spring-web\5.3.6\spring-web-5.3.6.jar;D:\maven-repository\org\springframework\spring-beans\5.3.6\spring-beans-5.3.6.jar;D:\maven-repository\org\springframework\spring-webmvc\5.3.6\spring-webmvc-5.3.6.jar;D:\maven-repository\org\springframework\spring-aop\5.3.6\spring-aop-5.3.6.jar;D:\maven-repository\org\springframework\spring-context\5.3.6\spring-context-5.3.6.jar;D:\maven-repository\org\springframework\spring-expression\5.3.6\spring-expression-5.3.6.jar;D:\maven-repository\org\projectlombok\lombok\1.18.20\lombok-1.18.20.jar;D:\maven-repository\org\slf4j\slf4j-api\1.7.30\slf4j-api-1.7.30.jar;D:\maven-repository\org\springframework\spring-core\5.3.6\spring-core-5.3.6.jar;D:\maven-repository\org\springframework\spring-jcl\5.3.6\spring-jcl-5.3.6.jar;D:\maven-repository\mysql\mysql-connector-java\8.0.23\mysql-connector-java-8.0.23.jar;D:\maven-repository\com\baomidou\mybatis-plus-boot-starter\3.4.2\mybatis-plus-boot-starter-3.4.2.jar;D:\maven-repository\com\baomidou\mybatis-plus\3.4.2\mybatis-plus-3.4.2.jar;D:\maven-repository\com\baomidou\mybatis-plus-extension\3.4.2\mybatis-plus-extension-3.4.2.jar;D:\maven-repository\com\baomidou\mybatis-plus-core\3.4.2\mybatis-plus-core-3.4.2.jar;D:\maven-repository\com\baomidou\mybatis-plus-annotation\3.4.2\mybatis-plus-annotation-3.4.2.jar;D:\maven-repository\com\github\jsqlparser\jsqlparser\4.0\jsqlparser-4.0.jar;D:\maven-repository\org\mybatis\mybatis\3.5.6\mybatis-3.5.6.jar;D:\maven-repository\org\mybatis\mybatis-spring\2.0.5\mybatis-spring-2.0.5.jar;D:\maven-repository\org\springframework\boot\spring-boot-autoconfigure\2.4.5\spring-boot-autoconfigure-2.4.5.jar;D:\maven-repository\org\springframework\boot\spring-boot-starter-jdbc\2.4.5\spring-boot-starter-jdbc-2.4.5.jar;D:\maven-repository\com\zaxxer\HikariCP\3.4.5\HikariCP-3.4.5.jar;D:\maven-repository\org\springframework\spring-jdbc\5.3.6\spring-jdbc-5.3.6.jar;D:\maven-repository\org\springframework\spring-tx\5.3.6\spring-tx-5.3.6.jar" com.example.xkly.XklyApplication
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.4.5)
2025-02-02 21:32:13.749 INFO 23464 --- [ main] com.example.xkly.XklyApplication : Starting XklyApplication using Java 1.8.0_152 on xyt with PID 23464 (C:\Users\20120\Desktop\xkly\target\classes started by 20120 in C:\Users\20120\Desktop\xkly)
2025-02-02 21:32:13.752 INFO 23464 --- [ main] com.example.xkly.XklyApplication : No active profile set, falling back to default profiles: default
2025-02-02 21:32:14.713 INFO 23464 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
2025-02-02 21:32:14.721 INFO 23464 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2025-02-02 21:32:14.722 INFO 23464 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.45]
2025-02-02 21:32:14.811 INFO 23464 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2025-02-02 21:32:14.811 INFO 23464 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1010 ms
2025-02-02 21:32:14.979 INFO 23464 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
_ _ |_ _ _|_. ___ _ | _
| | |\/|_)(_| | |_\ |_)||_|_\
/ |
3.4.2
2025-02-02 21:32:16.633 INFO 23464 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
2025-02-02 21:32:16.643 INFO 23464 --- [ main] com.example.xkly.XklyApplication : Started XklyApplication in 3.27 seconds (JVM running for 4.613)
更多推荐
所有评论(0)