使用Maven对Spring与Mybatis整合时引发的惨案~

编译环境:JDK11、Mysql-8.0.20、IDEA-2020

1、关于main的问题

[Error]:Failed to execute goal org.codehaus.mojo:exec-maven-plugin:3.0.0:exec (default-cli) on project spring-10-mybatis: Command execution failed.

我在编译时出现了上面的问题,经过盘查,发现代码没有问题,所以我查找了无数博客后得出的结论是:IDEA2020版本不兼容问题造成的,使用junit4中的Test可破!或是更换低版本的IDEA!
junit4的依赖是:

		<dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>

2、使用Test之后出现的问题

将main方法换成Test方法后(junit的jar包的依赖已经正确的在pom文件中写上,也成功的导入了junit包),出现了【错误: 找不到或无法加载主类】:
在pom文件中导入依赖即可:

 	   <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.4.2</version>
                <configuration>
                    <skipTests>true</skipTests>
                </configuration>
            </plugin>
        </plugins>

3、程序包不存在的问题

为了简化代码,在设计类时使用了@Data,注解在类,生成setter/getter、equals、canEqual、hashCode、toString方法,如为final属性,则不会为该属性生成setter方法。所以需要导入lombok的包
依赖:

 		<dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.12</version>
        </dependency>

而在进行编译时出现了以下问题:

Error:(3, 14) java: 程序包lombok不存在
Error:(5, 2) java: 找不到符号
  符号: 类 Data

解决方法:
点击File
在这里插入图片描述
在上述图片的位置中,勾选Delegate…的选项,重新编译即可成功!!!
如果还是不成功,可以尝试搜索Lombok插件点击install安装重启后即可:
在这里插入图片描述

4、编译测试时出现查找不到xml文件

Caused by: java.io.FileNotFoundException: class path resource [spring-dao.xml]

网上的大多数博客都不靠谱,找了许久我发现
在target下的classes包中,原来是没有xml文件,我想这可能就是导致其编译时报找不到xml文件的错误的原因!
在这里插入图片描述
而我在其中却能找到Java包下的类:
在这里插入图片描述
我查看了pomxml文件,发现我配置了Maven静态资源过滤问题!

			<resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>

所以我就突然有印象看过关于resource的静态资源过滤配置,所以我增加了以下配置:

			<resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>

成功解决问题!

5、获取JDBC连接失败

在解决了上述问题后,编译时又出现了以下问题:

### Error querying database.  Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

经过搜索后发现,原因是mysql-connector-java的版本过低,导致不兼容的问题!
我的Mysql版本是8.0.20,而mysql-connector-java的版本是5.1.47,只需要将以下mysql-connector-java的版本改到最新的就稳妥了!

<dependency>
	<groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.47</version>
</dependency>

数据成功查出!

6、警告问题

数据是成功查出来了,但是出现了警告:

Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.

稍微有点强迫症的我,决定把他解决掉!!!
根据提示,spring-dao.xml文件中的【com.mysql.jdbc.Driver】已经被弃用,所以改成【com.mysql.cj.jdbc.Driver】如下所示,警告成功被KO!

还有一点就是新版的mysql需要把【serverTimezone=UTC】这句加上,不然就会报有关时区的错误!!!

	<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value=" com.mysql.cj.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&amp;useSSL=true&amp;useUnicode=true&amp;characterEncoding=utf8"/>
        <property name="username" value="root"/>
        <property name="password" value="root"/>
    </bean>

以上为本人在一个程序中遇到的坑,希望能帮到每一个来到这里的你🌷

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值