一.Mybatis快速入门

1.1 框架介绍

  • 框架是一款半成品软件,我们可以基于这个半成品软件继续开发,来完成我们个性化的需求!
  • 如图:

img

1.2 ORM介绍

  • 如图:

img

具体映射关系如下图:

img

1.3 原始jdbc操作(查询数据)

img

1.4原始jdbc操作(插入数据)

img

1.5 原始jdbc操作的分析

原始 JDBC 的操作问题分析

​ 1.频繁创建和销毁数据库的连接会造成系统资源浪费从而影响系统性能。

​ 2.sql 语句在代码中硬编码,如果要修改 sql 语句,就需要修改 java 代码,造成代码不易维护。

​ 3.查询操作时,需要手动将结果集中的数据封装到实体对象中。

​ 4.增删改查操作需要参数时,需要手动将实体对象的数据设置到 sql 语句的占位符。

原始 JDBC 的操作问题解决方案

​ 1.使用数据库连接池初始化连接资源。

​ 2.将 sql 语句抽取到配置文件中。

​ 3.使用反射、内省等底层技术,将实体与表进行属性与字段的自动映射

1.6 什么是Mybatis

mybatis 是一个优秀的基于java的持久层框架,它内部封装了jdbc,使开发者只需要关注sql语句本身,而不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。

mybatis通过xml或注解的方式将要执行的各种 statement配置起来,并通过java对象和statement中sql的动态参数进行映射生成最终执行的sql语句。

最后mybatis框架执行sql并将结果映射为java对象并返回。采用ORM思想解决了实体和数据库映射的问题,对jdbc 进行了封装,屏蔽了jdbc api 底层访问细节,使我们不用与jdbc api 打交道,就可以完成对数据库的持久化操作。

MyBatis官网地址:mybatis – MyBatis 3 | Introduction

1.7 Mybatis的快速入门

MyBatis开发步骤:

①创建maven项目 导入maven坐标

  • mysql-connector-java-5.1.37-bin.jar
  • mybatis-3.5.3.jar
  • log4j-1.2.17.jar
    <!--导包 以坐标的方式 -->
    <!--  dependencies 依赖包 -->
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.37</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.3</version>
        </dependency>
    </dependencies>

②创建Student数据表

img

③编写Studentr实体类

package com.itss.bean;


import java.util.Date;

public class Student {
    //成员变量如果是基本数据类型 为了防止有null值出现  基本数据类型要使用包装类
    private Integer sid;
    private String name;
    private Integer age;
    private Date birthday;

    public Student(Integer sid, String name, Integer age, Date birthday) {
        this.sid = sid;
        this.name = name;
        this.age = age;
        this.birthday = birthday;
    }

    public Student() {
    }

    @Override
    public String toString() {
        return "Student{" +
                "sid=" + sid +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", birthday=" + birthday +
                '}';
    }

    public Integer getSid() {
        return sid;
    }

    public void setSid(Integer sid) {
        this.sid = sid;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }
}

④编写映射文件StudentMapper.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">

<!--namespace 命名空间-->
<mapper namespace="StudentMapper">
    <!--
    selectAll 代表查询全部的功能
    resultType  将来读取到的文件  封装到指定的对象中
    -->
    <select id="selectAll" resultType="com.itss.bean.Student">
        SELECT *
        FROM Student
    </select>
</mapper>

⑤编写核心文件MyBatisConfig.xml

<?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 核心根标签-->
<configuration>
    <environments default="mysql">
        <!--environment配置数据库环境  id属性唯一标识-->
        <environment id="mysql">
            <!-- transactionManager事务管理。  type属性,采用JDBC默认的事务-->
            <transactionManager type="JDBC"></transactionManager>
            <!-- dataSource数据源信息   type属性 连接池-->
            <dataSource type="POOLED">
                <!-- property获取数据库连接的配置信息 -->
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/db23"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>
    <!-- mappers引入映射配置文件 -->
    <mappers>
        <!-- mapper 引入指定的映射配置文件   resource属性指定映射配置文件的名称 -->
        <mapper resource="StudentMapper.xml"/>
    </mappers>
</configuration>

注意 配置文件需要放在resource 目录下

img

⑥编写测试类

import com.itss.bean.Student;
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 org.junit.Test;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

/**
 * @author IT苏苏
 * @className StudentTest01.java
 * @Form no
 * @Description ToDo
 * @createTime 2022 年 11 月 21 日 10  10:38:37
 **/
public class StudentTest01 {
    //    查询全部
    @Test
    public void selectAll() throws IOException {
        //1.加载核心配置文件
        InputStream is = Resources.getResourceAsStream("MyBatisConfig.xml");

        //2.获取Sq1Session工厂对象
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);

        //3.通过sqiSession工厂对象获取SqiSession对象
        SqlSession sqlSession = sqlSessionFactory.openSession();

        //4.执行映射配置文件中的sql语句,并接收结果
//        配置文件中的 名称空间.id
        List<Student> list = sqlSession.selectList("StudentMapper.selectAll");

        //5.处理结果
        for (Student stu : list
        ) {
            System.out.println(stu);
        }
        //6.释放资源
        sqlSession.close();
        is.close();
    }
}

运行测试结果 表中数据全部读取出来

img

1.8 知识小结

  • 框架 框架是一款半成品软件,我们可以基于框架继续开发,从而完成一些个性化的需求。
  • ORM 对象关系映射,数据和实体对象的映射。
  • MyBatis 是一个优秀的基于 Java 的持久层框架,它内部封装了 JDBC。

二. MyBatis的相关api

2.1 Resources

  • org.apache.ibatis.io.Resources:加载资源的工具类。
  • 核心方法

img

2.2 构建器SqlSessionFactoryBuilder

  • org.apache.ibatis.session.SqlSessionFactoryBuilder:获取 SqlSessionFactory 工厂对象的功能类
  • 核心方法

img

  • 通过加载mybatis的核心文件的输入流的形式构建一个SqlSessionFactory对象
String resource = "org/mybatis/builder/mybatis-config.xml"; 
InputStream inputStream = Resources.getResourceAsStream(resource); 
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); 
SqlSessionFactory factory = builder.build(inputStream);

其中, Resources 工具类,这个类在 org.apache.ibatis.io 包中。Resources 类帮助你从类路径下、文件系统或一个 web URL 中加载资源文件。

2.3 工厂对象 SqlSessionFactory

  • org.apache.ibatis.session.SqlSessionFactory:获取 SqlSession 构建者对象的工厂接口。
  • 核心api

img

2.4 SqlSession 会话对象

  • org.apache.ibatis.session.SqlSession:构建者对象接口。用于执行 SQL、管理事务、接口代理。
  • 核心api

img

SqlSession 实例在 MyBatis 中是非常强大的一个类。在这里你会看到所有执行语句、提交或回滚事务和获取映射器实例的方法。

相关API小结

Resources:加载资源的工具类。

sqlSessionFactoryBuilder :获取SqlSessionFactory 工厂对象的功能类。

SqlSessionFactory :获取SqlISession构建者对象的工厂接口。指定事务的提交方式。

SqlSession :构建者对象接口、执行SQL、管理事务、接口代理。

三.MyBatis 映射配置文件

3.1 映射配置文件介绍

img

3.2 查询功能

原文地址:http://www.cnblogs.com/sql-bk/p/16927436.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性