mybatis项目练习的几个小错误记录
一、写测试程序会话工厂时SqlSessionFactory/SqlSession一直标红找不到
问题:好像是引入mybatis包版本中没有SqlSessionFactory/SqlSession,或者忘记引入mybatis包了
解决:用maven引入,引入后可以查看左边包目录中是否有这个接口如下图,是有的
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.0</version> </dependency>
二、写测试是@[email protected]注解都标红 @Test等注解是要引入junit包的如下: <!-- https://mvnrepository.com/artifact/junit/junit --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>compile</scope> </dependency> 引入后,查看左边包有@xx接口/类,注意范围scope要是compile,如果是test左边即使有类也会报错 三、Error parsing SQL Mapper Configuration.Cause :java.io.IOException: Couldn't find resource db.properties,即找不到我项目中的mysql属性文件
检查一下我的mybatis配置文件,有加载了mysql属性文件如下(我项目中叫mybatis-config.xml)
<!--加载mysql属性文件--> <properties resource="db.properties"> <!--properties中还可以配置一些属性名和属性值 --> <!-- <property name="jdbc.driver" value=""/> --> </properties>
后来发现是maven中没有设置,所以properties属性文件没有被编译,也就自然找不到了,改pom.xml,加入 <include>**/*.properties</include>配置如下:
<build> <!--把resources目录中的xml文件和properties打包到项目中--> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.xml</include> <include>**/*.properties</include> </includes> </resource> </resources> </build>
我的xml文件和properties文件是在resources目录下,所以这样写,如果不是,要修改对应的路径和包含文件夹
总:报错找不到文件,不一定是没有配置文件,告知位置路径,而是可能没有编译打包,程序自然也是找不到的。
注:这里摸索出两种mysql属性配置方法
1)此时mybatis-config.xml中数据库相关属性配置如下:
<!--加载mysql属性文件-->
<properties resource="db.properties">
<!--properties中还可以配置一些属性名和属性值 -->
<!-- <property name="jdbc.driver" value=""/> -->
</properties>
......
<!-- 和spring整合后 environments配置将废除--> <environments default="development"> <environment id="development"> <!-- 使用jdbc事务管理,事务控制由mybatis--> <transactionManager type="JDBC" /> <!-- 数据库连接池,由mybatis管理--> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> </dataSource> </environment> </environments>
另外resource目录下还放了db.properties文件如下:
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/mybatisTest?useSSL=false jdbc.username=root jdbc.password=123456
2)另一种配置mysql属性方法,不用db.properties和<properties>配置,直接在mybatis-config.xml中配置如下(对应下面SSL第二种改法),亲测可行:
<!--另一种数据库配置写法,直接在这儿配置--> <environments default="development"> <environment id="development"> <!-- 使用jdbc事务管理,事务控制由mybatis--> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/mybatisTest?characterEncoding=utf-8&useSSL=false" /> <property name="username" value="root" /> <property name="password" value="123456" /> </dataSource> </environment> </environments>
四、SQL错误-连接数据库时出错Establishing SSL connection without server's identity verification is not recommended
Mon Sep 21 10:20:29 CST 2020 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
原因--需要加入useSSL=false
不过不同地方形势不一样
1、db.properties改成:jdbc.url=jdbc:mysql://localhost:3306/mybatisTest?useSSL=false
2、如果是在XML中直接配置了,
XML或者HTML都要用&转义:jdbc:mysql://localhost:3306/mybatisTest?characterEncoding=utf8&useSSL=false