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源码剖析之JDBC回顾总结 -> 正文阅读

[大数据]MyBatis源码剖析之JDBC回顾总结

目录

前言

JDBC使用步骤

JDBC使用示例

原始jdbc开发存在的问题

本文源代码参考


前言

众所周知,MyBatis是一个非常优秀的基于Java的持久层框架。其支持定制化 SQL、存储过程以及高级映射,通过使用简单的 XML或注解避免了使用传统JDBC时带来的硬编码问题。那么MyBatis究竟是如何解决这些问题的呢?XML或注解又是如何被解析的?其内部的数据库连接池是如何实现的?我们如何通过MyBatis预留给我们的扩展接口进行插件开发?请大家带着这些疑问,在接下来的章节里我将和大家一起探索这些问题的实现

在学习MyBatis源码之前,我们先对传统JDBC的使用方式进行演示,同时总结出其存在的缺点

JDBC使用步骤

  1. 加载 jdbc 驱动程序
  2. 通过驱动管理类获取数据库连接
  3. 获取预处理statement
  4. 设置参数
  5. 获取结果集
  6. 处理结果集
  7. 释放资源? ??

JDBC使用示例

import com.example.mybatismrpu.entity.User;
import java.sql.*;

public class JDBCDemo {

    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        User user = new User();
        // 1.加载数据库驱动 (我用的是mysql 8.0.27,如果你用的是5.X的版本请换成 com.mysql.jdbc.Driver)
        Class.forName("com.mysql.cj.jdbc.Driver");
        // 2.通过驱动管理类获取数据库链接
        connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mybatis_mrpu?characterEncoding=utf-8", "root", "1527463happy");
        // 定义sql语句?表示占位符
        String sql = "select * from user where username = ?";
        // 3.获取预处理statement
        preparedStatement = connection.prepareStatement(sql);
        // 4.设置参数,第?个参数为sql语句中参数的序号(从1开始),第?个参数为设置的参数值
        preparedStatement.setString(1, "tom");
        // 5.向数据库发出sql执?查询,查询出结果集
        resultSet = preparedStatement.executeQuery();
        // 6.处理结果集 
        while (resultSet.next()) {
            int id = resultSet.getInt("id");
            String username = resultSet.getString("username");
            String password = resultSet.getString("password");
            String birthday = resultSet.getString("birthday");
            // 封装User
            user.setId(id);
            user.setUsername(username);
            user.setPassword(password);
            user.setBirthday(birthday);
        }
        System.out.println("查询结果 user = " + user);
        // 7.释放资源
        if (resultSet!=null){
            resultSet.close();
        }
        if (preparedStatement != null){
            preparedStatement.close();
        }
        if (connection != null){
            connection.close();
        }
    }

}

原始jdbc开发存在的问题

  • 频繁的创建与销毁数据库连接,从而影响系统性能
  • 硬编码,配置、sql参数、结果集处理等与业务代码耦合在一起

本文源代码参考

mybatis-mrpu: mybatis实现原理探索

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-03-12 17:36:19  更:2022-03-12 17:39:08 
 
开发: 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:05:58-

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