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&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;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> 

具体位置见下图:

四、MapperRegistry就是核心文件mybatis-config.xml中注册mappers

原文地址:https://www.cnblogs.com/huangxuannn/p/15656633.html