第一个Mybaits程序

Mybatis

1.第一个Mybatis程序

思路:搭建环境->导入Mybatis->编写代码->测试

1.1.1 搭建环境

1.1.1 创建普通maven项目

image-20210110230246250.png
image-20210110230411921.png

1.1.2 删除src

1.2 导入Mybatis

1.2.1 在pox.xml里导入依赖

<?xml version="1.0" encoding="UTF-8"?>
    <!--父工程-->
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.kuang</groupId>
    <artifactId>mybatis_day1</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <module>mybatis_01</module>
    </modules>
    <dependencies>
        <!-- mybatis-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.2</version>
        </dependency>
        <!-- mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>
        <!-- junit-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
    </dependencies>

</project>

注意用crtl+shift+o刷新maven依赖

1.2.2 新建模块moduel

image-20210110230844443.png

1.2.3 Mybatis系统的核心设置 -- mybatis-config.xml

image-20210110232614701.png

1.3 编写代码

1.3.1 根据官方文档,我们写一个工具类utils,来简化SqlSession的创建

image-20210110233812077.png
  • package com.kuang.utils;
    
    import org.apache.ibatis.io.Resources;
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    
    import java.io.IOException;
    import java.io.InputStream;
    
    public class MybatisUtils {
        private static  SqlSessionFactory sqlSessionFactory = null;
    
        static {
            try {
                //使用Mybatis第一步:获取SqlSessionFactory对象
                String resource = "mybatis-config.xml";
                InputStream inputStream = null;
                inputStream = Resources.getResourceAsStream(resource);
                sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
        public static SqlSession getSqlSession(){
            return sqlSessionFactory.openSession();
        }
    
    }
    
    

1.3.2 根据数据库表创建相应的实体类Dao

  • 实体类的Constructor,getter,setter可以用alt+insert来快速构建

  • Dao中的UsersDao和之后的Mapper是一样的意思,都用Interface

  • image-20210110234007855.png
  • image-20210110234034825.png

1.3.3 在dao包下再建一个UsersMapper.xml

  • <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper
            PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="com.kuang.dao.UsersDao"> <!--绑定一个Dao接口-->
        <select id="getUsersList" resultType="com.kuang.pojo.Users"> <!--id是接口函数名, 然后是返回类型-->
        select * from mybatis.users
      </select>
    </mapper>
    

1.4 测试

1.4.1 在src->test下创建相同结构的测试

image-20210110234034825.png

1.4.2 发现错误并且解决错误

  • 错误1

  • image-20210111001614180.png
  • org.apache.ibatis.binding.BindingException: Type interface com.kuang.dao.UsersDao is not known to the MapperRegistry.
    
  • 在核心配置mybatis-config.xml里要设置mappers

  • image-20210111001959515.png
  • 错误2

  • image-20210111002309342.png
  • java.lang.ExceptionInInitializerError

  • maven由于他的约定大于配置,我们之后可能遇到我们写的配置文件,无法被到处或者生效的问题,解决方案如下

  • 在pom.xml(父工程和子工程都要)中的build中配置resources,来防止我们资源导出失败问题

  • image-20210111003147046.png
  • <!--在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>
    
  • 错误3

  • 1 字节的 UTF-8 序列的字节 1 无效。

  • 解决办法:

  • 将所有XML里的UTF-8改成UTF8

  • 错误4

  • java不支持发行版本5

  • 解决办法:

  • image-20210111004310407.png
  • image-20210111004507897.png
  • image-20210111004603070.png
  • image-20210111004624795.png
  • image-20210111004731336.png

1.4.4 测试结果

image-20210111004811723.png
image-20210111004830297.png
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容