zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    win8.1系统出现C0000034正在应用更新操作怎么办
    《FPGA全程进阶---实战演练》第三十二章 Signal Tap II 应用实例
    Altium Designer学习---如何进行SI仿真
    硬件工程师笔试常见问题
    求职经验贴-描述笔者当时找工作情形
    Altium designer软件如何设计原理图库封装图库以及交互式布局
    modelsim如何使用tcl脚本来写编译文件
    代码自动部署
    Nginx 限流配置
    使用Golang 封装一个Api 框架 ----- 数据库操作篇(gorm引入)
  • 原文地址:https://www.cnblogs.com/huangxuannn/p/15656633.html
Copyright © 2011-2022 走看看