首先,我创建网一个springboot项目之后,做的第一件事就是要更改其中的pom.xml文件。
有些依赖的配置过高会导致很多问题,向我开始用到springboot最新版本3.0.0,以及mybatis-plus版本3.5.2。开始我是先用mybatis连接数据库是没有问题的(就是数据都能从数据库中读取出来),但已换成mp之后,就一直报找不到bean。
很烦,搞了一下午和晚上。去百度搜索都是说要加入@MapperScan()等等,但还是没有成功。后来我让我朋友也试了一下,他一下就好了,对比一下,是版本过高的原因。后来我就把我的版本改为2.7.4(springboot)和3.4.2(mp),完整的pom.xml文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.4</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>newspring_ssmp</artifactId>
<version>0.0.1-SNAPSHOT</version>
<properties>
<java.version>17</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--mybatis-plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.2</version>
</dependency>
<!-- druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.15</version>
</dependency>
<!-- lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
还有需要注意的地方,就是导入mysql依赖时,尽量选第二个
pom.xml配置文件需要注意的就是这些了。
下面是关于数据库列名与实体属性名不一致的问题。
若是主键名不一致,可以用@TableId来指定,其他属性用@TableField,如下:
public class Book {
@TableId(value = "bookid")
private int id;//因为数据库中主键名为bookid
@TableField(value = "name")
private String bookname;//数据库中,名字为name
private String author;//与数据库一致
private String des;
private String price;
private String type;
private String photoname;
}
最后一个需要注意的是,用mp插入数据时关于id解决问题
正常我们插入数据后id应该是虽数据库自增的,但mp的插入id是使用雪花算法来计算的,如果我们没有做配置,那么他就会报以下错误。
我们只需要改一下yml文件一下即可
加上id-type那么问题就解决啦。
最后强调,一定要注意版本,不要太高了(因为我也是跟视频学的,不然错了,就不知道怎么解决了)