IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Mybatis细致讲解 -> 正文阅读

[大数据]Mybatis细致讲解

我们学过servlet,在servlet项目中,我们使用的是JDBC的五大基本步骤,这里先回顾一下:

1:加载驱动

  • Class.forName(“com.mysql.cj.jdbc.Driver”);

2:获取数据库连接:

  • String url = “jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false”

  • String user = root;

  • String password = root

  • Connection conn = DriverManager.getConnection(“jdbc:mysql://localhost:3306/xxx”, “root”, “root”);

3:获取执行sql语句的对象:

  • String sql = …

  • Statement statement = conn.createStatement(sql);

4:执行sql语句:

  • ResultSet resultSet = statement.executeUpdate(sql);

5:操作结果集,关闭连接:

这里我们假设已经有了一个实体类:User,然后可以创建集合遍历结果集并存入集合中:

List<User> list = new ArrayList<>();
while(resultSet .next){
   User user = new User;
   user.setUserId= (resultSet.getInt("userId"));
   user.setUserName = (resultSet.getInt("userName"));
   list.add(user)
}

然后我来说一下Mybatis是什么,Mybatis其实就是帮我们封装好了上述的步骤,因为在我们学习servlet中,我们会发现我们每每使用一次数据库就需要不断的去加载驱动,这样做很麻烦而且浪费了内存,所以Mybatis帮我们做的就是封装起来这些

我具体来演示一下,首先我们创建好了一个基本的Mybatis项目,第一步我们就是去写好Mybatis的基本配置文件:

请添加图片描述

<?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>

    <!--  配置mybatis环境-->
    <environments default="development">
        <!-- id:数据源名称-->
        <environment id="development">
             <!--  事务类型:使用JDBC的事务,使用Connection的提交和回滚-->
            <transactionManager type="JDBC"/>
              <!-- 数据源:dataSource数据源,创建Connection对象 type=“POOLED“ 使用数据库连接池技术 -->
            <dataSource type="POOLED">
                <!-- 连接数据库的四个参数 mysql8.0-->
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url"
                          value="jdbc:mysql://localhost:3306/mybatis?useUnicode=true&amp;characterEncoding=utf8&amp;serverTimezone=GMT%2B8&amp;useSSL=false"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/ftz/demo/pojo/User.xml"/>
    </mappers>
</configuration>

上面我很详细的注释了每一步的目的是什么,我们会发现在原来JDBC中的驱动和连接都写在了这里,其中在这个地方用到了数据库连接池技术,上面的代码我们在Mybatis中文官网就可以直接复制粘贴,都是不需要自己手写的!:

请添加图片描述

然后我们接下来就是去写一个实体类:

请添加图片描述

上面简单的用了一下Lombok插件自动生成的get set方法,大家也可以自己手写,然后在写好这些后,按照JDBC我们需要写sql语句了,在Mybatis我们的sql语句是可以直接写在.xml文件中的,我们也可以叫做mysql的映射文件

请添加图片描述

我们这里由于是.xml文件,所以是以标签的形式写主题内容,我们的sql语句就写在了select标签里面,这里我们比原来多写了一个命名空间叫做namespace,这里可以等价于我们曾经写的方法名字,说白了就是为这个sql语句单独起一个名字,方便我们后续调用sql语句的时候明确调用哪一条语句,并且这里需要写清楚返回值类型,我们这里直接使得返回类型对应实体类,这也就强制实体类中创建的属性必须与数据库中的字段一一对应!

然后我们回到Mybatis.xml这个配置文件中,为了保证我们可以让mybatis文件索引到我们的mysql映射文件,我们需要在下面加上mapper映射路径:

请添加图片描述

接下来我们就可以写测试类了:

请添加图片描述

package com.ftz.demo.test;

import com.ftz.demo.pojo.User;
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.Reader;
import java.util.List;

public class Test01 {

    @Test
    public  void  test01() throws IOException {
        //1:读取mybatis配置文件
        Reader reader  = Resources.getResourceAsReader("mybatis.xml");
        //2:创建sqlSessionFactory对象,目的是获取sqlSession的创建工厂:其实就是connection对象的封装
        SqlSessionFactory sqlSessionFactory  = new SqlSessionFactoryBuilder().build(reader);
        //3:创建SqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //4:执行sql语句
        List<User> userList = sqlSession.selectList("com.ftz.demo.pojo.User.queryALL");
        // 5:遍历结果
        for (User user:userList){
            System.out.println(user);
        }
        //6:关闭资源
        sqlSession.close();
        

    }
}

在测试类中,我们发现,前面几步都是Mybatis帮我们做的,我们唯一决定性的就是上面我写的第四步执行sql语句: List<User> userList = sqlSession.selectList("com.ftz.demo.pojo.User.queryALL");

所以说Mybatis本质还是JDBC,只不过简化了我们的配置,可以理解成我们有了一个工厂去实现原来JDBC中我们的操作,使用工厂创建,并且修改sql语句可以不去修改源码,而是直接修改配置文件就好

还有一个就是过滤文件,由于我们写的xml都是在resources下面的,所以我们选哟在pom里面配置文件过滤:

请添加图片描述

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-03-08 22:34:18  更:2022-03-08 22:35:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:09:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码