Mybatis学习笔记
Mybatis学习笔记01
一、什么是Mybatis
MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。
二、Mybatis执行流程
三、学习过程中遇到的问题
1.单元测试时报错Could not find resource
翻阅了很多资料也试了很多方法一直没有解决,最后发现是自己在命名时没有按照规范来所以导致找不到资源,所以在使用IDEA创建一个新的maven项目时要严格按照规范来给项目、包、配置文件命名,maven中groupid和artifactId被统称为“坐标”,groupid是项目组织唯一的标识符而artifactId就是项目的唯一的标识符,goupid的命名格式一般为com.xxxx这里的xxxx可以时公司名字或者自己的名字,artifactId实际对应项目名-模块名,它的命名格式一般为xxxx-xxxx,比如Mybatis-study,main/src/java目录下的包页必须按照com.xxxx.包名来命名,只有这样才能确保资源能够被准确的找到,ps:Mybatis的配置文件命名格式一般为:mybatis-config.xml mapper的映射文件命名格式一般为:xxxMapper.xml
2. 运行单元测试时抛出java.lang.ExceptionInInitializerError异常
情况1:资源导出失败或访问不到
解决方法:打开maven项目的pom.xml在build中配置resources,来防止我们资源导出失败或者访问不到的问题
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
情况2:mybatis-config.xml中没有注册mappers
解决方法:见以下代码
<mappers>
<mapper resource="com/hx/dao/UserMapper.xml"/>
</mappers>
PS:位置不要放错,还有尽量不要在这个配置文件里面写中文注释,具体原因我也不太清楚
3.运行时警告Loading class `com.mysql.jdbc.Driver'. This is deprecated......以及抛出The server time zone value ‘?й???’ is unrecogniz java.sql.SQLException:异常
解决方法:见以下代码
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/day1118?useSSL=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
应该是数据库版本的问题,然后有时区异常,在url后加上serverTimezone=GMT%2B8字段即可
4.执行Junit测试类出现Class not found:"xxx.xxxTest"
1.找到maven工程中所有的.iml文件。
2.将上面的三个文件删除。
3.鼠标右键Maven-->Projects-->Reimport。
4.重新执行测试代码即可。
5.项目运行时报错Error:java:程序包org.apache.ibatis.io不存在
搜了很多资料说是IntelliJ IDEA 2020.1的一个坑
每次更新了项目资源重新运行项目就会报错找不到程序包
解决方法:
1.找到自己下载maven的位置--->conf--->把settings.xml中自己添加的本地仓库localRepository删掉(idea设置中本地的仓库不删)
2.点击Maven中的M按钮 输入mvn idea:module命令
3.等待部署完毕重新运行即可
6.点击maven的install方法时报错Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12.4
解决方法:在pom.xml中加入如下插件然后重新加载资源即可
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.4.2</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
具体位置见下图: