MyBatis简介与环境搭建(尚硅谷)

MyBatis的简介

一、MyBatis历史

二、MyBatis的特性

三、MyBatis的下载

四、MyBatis尚硅谷视频地址(2022完整!!!)

五、与其它持久层框架的异同

JDBC

Hibernate 和 JPA

MyBatis

MyBatis环境搭建

项目骨架

数据库表数据

一、创建Maven

二、pom.xml文件

三、创建MyBatis的核心配置文件

mybatis-config.xml

四、创建mapper接口

ProductMapper接口

五、创建MyBatis的映射文件

ProductMapper.xml

六、编写测试类,通过juit进行测试

关于配置文件的细节请看


MyBatis的简介

一、MyBatis历史

MyBatis框架里面是封装了JDBC,用于连接数据库,但是它比原先的JDBC更快速,更高效

MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁 移到了Google Code。随着开发团队转投Google Code旗下, iBatis3.x正式更名为MyBatis

代码于 2013年11月迁移到GithubiBatis一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。 iBatis提供的持久层框架 包括SQL Maps和Data Access Objects(DAO)。

二、MyBatis的特性

(1) MyBatis 是支持定制化 SQL存储过程以及高级映射的优秀的持久层框架

定制化SQL表示:在MyBatis中所有的SQL语句都需要我们自己写,不像Hibernate框架可以自动生成。

(2) MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集

(3) MyBatis可以使用简单的XML注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录(不用写实现类了!)

(4) MyBatis 是一个 半自动的ORM(Object Relation Mapping)框架

三、MyBatis的下载

MyBatis下载地址:https://github.com/mybatis/mybatis-3

四、MyBatis尚硅谷视频地址(2022完整!!!)

本博客内容是根据尚硅谷的视频写的,该视频的地址是在,需要自取,完全免费,链接过期请留言,也可以微信搜索“尚硅谷”公众号,然后自行下载!

链接:https://pan.baidu.com/s/1xCKBjs7pLSoBsxVohnJ09g 
提取码:7j6a 
--来自百度网盘超级会员V3的分享

五、与其它持久层框架的异同

JDBC

  • SQL 夹杂在Java代码中耦合度高,导致硬编码内伤
  • 维护不易且实际开发需求中 SQL 有变化,频繁修改的情况多见
  • 代码冗长,开发效率低

Hibernate 和 JPA

  • 操作简便,开发效率高
  • 程序中的长难复杂 SQL需要绕过框架
  • 内部自动生产的SQL,不容易做特殊优化
  • 基于全映射的全自动框架,大量字段的 POJO进行部分映射时比较困难。
  • 反射操作太多,导致数据库性能下降。

MyBatis

  • 轻量级,性能出色
  • SQL 和 Java 编码分开,功能边界清晰。Java代码专注业务、SQL语句专注数据
  • 开发效率稍逊于HIbernate,但是完全能够接受

MyBatis环境搭建

项目骨架

注:pojo包下的Product实体类省略,数据库表以给出,读者自行创建即可! 

数据库表数据

一、创建Maven

不要使用idea默认的Maven地址!使用自己设定的Maven仓库。

二、pom.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.Harmony</groupId>
    <artifactId>MyBatis_demo01</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <!-- mybatis框架的jar包-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.3</version>
        </dependency>

        <!-- mysql-java的jar包 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.16</version>
        </dependency>

        <!-- 测试jar包 -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>

三、创建MyBatis的核心配置文件

MyBatis的核心配置文件习惯上命名为mybatis-config.xml,但是这只是建议,并非强制要求!

之后整合Spring,这个配置文件可以省略!(因为可以写在spring的配置文件中)

核心配置文件主要用于配置连接数据库的环境以及MyBatis的全局配置信息

大致就是如下两件事:

  1. 设置数据库的环境
  2. 引入映射配置文件

mybatis-config.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>

    <!-- 1.设置连接数据库的环境 -->
    <environments default="development">
        <!-- 具体环境 -->
        <environment id="development">
            <!-- 事务管理器 -->
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/demo?serverTimezone=UTC"/>
                <property name="username" value="root"/>
                <property name="password" value="888888"/>
            </dataSource>
        </environment>
    </environments>

    <!-- 2.配置映射文件 -->
    <mappers>
        <mapper resource="mappers/ProductMapper.xml"/>
    </mappers>

</configuration>

四、创建mapper接口

ProductMapper接口

package com.Harmony.dao;

import java.util.List;

public interface ProductMapper {

    /**
     * 添加商品
     */
    int insertProduct();

}

五、创建MyBatis的映射文件

ORM(Object Relationship Mapping)对象关系映射。

  • 对象:Java的实体类对象
  • 关系:关系型数据库
  • 映射:二者之间的对应关系
Java概念数据库概念
属性字段 / 列
对象记录 / 行

1、映射文件的命名规则:

表所对应的实体类的类名+Mapper.xml

例如:表t_user,映射的实体类为User,所对应的映射文件为UserMapper.xml

因此一个映射文件对应一个实体类,对应一张表的操作

MyBatis映射文件用于编写SQL,访问以及操作表中的数据

MyBatis映射文件存放的位置是src/main/resources/mappers目录下

2、MyBatis中可以面向接口操作数据,要保证两个一致:

a>mapper接口的全类名和映射文件的命名空间(namespace)保持一致

b>mapper接口中方法的方法名和映射文件中编写SQL的标签的id属性保持一致

ProductMapper.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.Harmony.dao.ProductMapper">

    <insert id="insertProduct">
        insert into product values(105,"电脑",123.23,8)
    </insert>

</mapper>

六、编写测试类,通过juit进行测试

package com.Harmony.test;


import com.Harmony.dao.ProductMapper;
import com.Harmony.pojo.Product;
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;

public class MyBatisTest {

    @Test
    public void testInsertMyBatis() throws IOException {

        //加载核心配置文件
        InputStream is = Resources.getResourceAsStream("mybatis-config.xml");

        //获取SqlSessionFactoryBuilder对象
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();

        //通过核心配置文件所对应的字节输入流创建工厂类SqlSessionFactory,生产SqlSession对象
        SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);

        SqlSession sqlSession = sqlSessionFactory.openSession();

        ProductMapper mapper = sqlSession.getMapper(ProductMapper.class);

        int result = mapper.insertProduct();

        //要提交事务
        sqlSession.commit();

        System.out.println(result);
    }

}

注意:上述测试类的代码,如果没有sqlSession.commit(),即不提交事务,修改数据是不成功的,虽然程序不会报错。或者可以将sqlSessionFactory.openSession()括号里的值该为true,即表示自动提交事务。

关于配置文件的细节请看

MyBatis配置文件标签详解(尚硅谷)_面向鸿蒙编程的博客-CSDN博客icon-default.png?t=M3K6https://blog.csdn.net/weixin_43715214/article/details/124613754

posted @ 2022-05-05 13:25  金鳞踏雨  阅读(23)  评论(0编辑  收藏  举报  来源