MyBatis框架

GA666666 2021-11-21 PM 54℃ 1条

Mybatis

一、简介

  1. MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

二、下载

  1. 目前mybatis已经放在github上面,点击进入下载

  2. 下载压缩包后解压

  3. mybatis-3.5.6.jar就是所需要的jar,lib下还有其他辅助的jar包
  4. pdf 文件是帮助文档

三、Hello Mybatis

1.配置环境

  1. 首先在idea中创建maven项目
  2. 在pom中添加如下数据

    <dependencies>
            <!--Mybatis-->
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.5.6</version>
            </dependency>
            <!--mysql-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>6.0.6</version>
            </dependency>
            <!--junit-->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.11</version>
                <scope>compile</scope>
            </dependency>
        </dependencies>
  3. 在src/main/resources目录下创建mybatis-config.xml,右键项目选择--》 open Module Sitting

  4. 点击Resources,然后选择项目中的resources,然后点击OK即可

2.添加配置文件

  1. 上述操作中在resources中创建了mybatis-config.xml,根据 pdf 说明,在文件中这样写

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE configuration
     PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
     "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>
     <environments default="development">
     <environment id="development">
     <transactionManager type="JDBC"/>
     <dataSource type="POOLED">
     <property name="driver" value="${driver}"/>
     <property name="url" value="${url}"/>
     <property name="username" value="${username}"/>
     <property name="password" value="${password}"/>
     </dataSource>
     </environment>
     </environments>
     <mappers>
         <mapper resource="org/mybatis/example/BlogMapper.xml"/>
     </mappers>
    </configuration>
  2. 修改文件中的连接和地址等

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE configuration
            PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>
        <environments default="development">
            <environment id="development">
                <transactionManager type="JDBC"/>
                <dataSource type="POOLED">
                    <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                    <property name="url"
                              value="jdbc:mysql://localhost:3306/diary?serverTimezone=Asia/Shanghai"/>
                    <property name="username" value="root"/>
                    <property name="password" value=""/>
                </dataSource>
            </environment>
        </environments>
        <mappers>
            <mapper resource="DiaryMapper.xml"/>
        </mappers>
    </configuration>
  3. 注意:

    正常写法应是:jdbc:mysql://localhost:3306/diary

    但是在不加后面的东西,在运行时会报以下错误:Cause: java.sql.SQLException: The server time zone value

    主要是没有设置时区

3.创建测试类

  1. 在src下创建测试类 mybatis.java
  2. 根据 pdf 帮助文档,首先需要根据配置文件 获取 SqlSessionFactory

     String resource = "mybatis-config.xml";
     InputStream inputStream = Resources.getResourceAsStream(resource);
     SqlSessionFactory sqlSessionFactory =
                    new SqlSessionFactoryBuilder().build(inputStream);
  3. 获取到sqlSessionFactory后即可通过selectOne方法获取一对象

     Diary diary = sqlSessionFactory.selectOne("DiaryMapper.selectDiary", 1);
  4. selectOne 有两个参数,第一个是配置文件映射的sql语句,第二个是要传递的参数

     @Test
        public void test() throws IOException {
            SqlSession session = getSqlSessionFactory().openSession();
            try {
                Diary diary = session.selectOne(
                        "DiaryMapper.selectDiary", 1);
                System.out.println(diary);
            }finally {
                session.close();
            }
        }
  5. 在resource下创建sql映射文件 ---》DiaryMapper.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="DiaryMapper">
        <select id="selectDiary" resultType="Diary">
                select * from diaries where id = #{id}
        </select>
    </mapper>
  6. 在 mybatis-config.xml 中修改最下面的 mappers 映射的文件目录

     <mappers>
            <mapper resource="DiaryMapper.xml"/>
     </mappers>

四、接口式编程

  1. 相比上一个方法有很多优点,高解耦,类型检查 ...
  2. 创建一个接口来替换代码中的一长串

    public interface DiaryMapper {
        public Diary getDiaryById(Integer id);
    }
  3. 将 DiaryMapper.xml中的 namespace 指定为接口的全类名 :
  4. 将 xml 中的 select id 修改为方法名:

唉呀 ~ 仅有一条评论


  1. 笔记 - GA666666 Blog ~ 个人博客
    笔记 - GA666666 Blog ~ 个人博客

    [...]Docker容器 -2021Dubbo框架 -2020Git版本控制-20180Golang语言入门-2021Java设计模式-2019JVM探究-2019Mybatis框架-2019MySQL数据库-2019Netty网络编程框架-2021Redis数据库-2020SMS框架整合-2019Spring框架-2018Springboot框架-2019Springmvc框架-2019SVN版本控制-[...]

    回复 2024-02-21 11:10