Human0722's blog Human0722's blog
首页
  • Spring

    • Spring Framework
    • Spring Boot
    • Spring Cloud
  • CCNA
  • Vue

    • Vue2
日本语
导航
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Human0722

Gravity always win
首页
  • Spring

    • Spring Framework
    • Spring Boot
    • Spring Cloud
  • CCNA
  • Vue

    • Vue2
日本语
导航
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • Spring Framework

  • Spring Boot

  • Java 类库

  • 数据库

    • Java的MySQL数据库连接库
    • 解决方案

    • Java.Content
    • 数据库
    Xueliang
    2022-08-31
    目录

    Java的MySQL数据库连接库

    参考链接:

    • 廖雪峰JDBC简介 (opens new window)

    # JDBC

    JDBC 是 Java 程序访问数据库的标准接口, 全称是 Java DataBase Connectivity 。
    Java 程序访问数据库时,不是直接通过TCP连接直接与数据库交换数据,而是通过 JDBC 接口调用数据库厂商提供的驱动, 由驱动进行创建管理TCP连接。驱动的本质为实现了JDBC接口的jar包 。
    开发者可以直接面向JDBC接口开发,而不用考虑不同数据库驱动的具体实现细节, 面向接口开发降低了耦合行,可以很方便地替换JDBC的实现类(驱动)来达到替换数据库的目的。

      Java APP -> JDBC Interface -------->    MySQL Driver  -------> MySQL Server 
         |              |        --impl-->    |             --TCP-->    |
         ▼              ▼                     ▼                         ▼
         U             JVM                  Oracle                    Oracle     
    
    1
    2
    3
    4

    JDBC接口的代码位于 java.sql 包中。 下面是一段JDBC接口的示例代码:

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    public class JDBC {
        public static void main(String[] args) {
          String JDBC_URL = "jdbc:mysql://localhost:3306/test";
          String JDBC_USER = "root";
          String JDBC_PASSWORD = "password"; 
           
          // 1.获取数据库连接
          try (Connection conn = DriverManager.getConnection(JDBC_URL, JDBC_USER, JDBC_PASSWORD)) {
            // 2. 创建Statement对象  
            try (Statement stmt = conn.createStatement()) {
                // 3. 执行SQL语句
              try (ResultSet rs = stmt.executeQuery("select * from user")) {
                // 4. 处理结果集
                while (rs.next()) {
                    long id = rs.getLong(1); // 注意:索引从1开始
                    String name = rs.getString(2);
                }
              }
            }
          }   
        }
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28

    执行一个SQL并获得结果的步骤:

    • 创建一个连接
    • 创建Statement对象
    • 执行SQL语句
    • 处理结果集

    Connection, Statement, ResultSet都是资源对象,所以放在 try() 中,代码块异常或者执行结束时可以自动关闭。
    创建一个TCP连接的成本是很高的,所以一个连接可以在程序中共享,但是TCP连接何时创建,何时回收又是管理的难题。 jvm 又提供了 JDBC连接池 接口 javax.sql.DataSource, 来帮助维护一定数量的TCP连接。但是这只是一个接口,要使用JDBC连接池,就要选择一个连接池的实现,常见的连接池有:

    • Druid
    • HikariCp

    # JDBC 连接池

    javax.sql.DataSource 接口

    Druid 连接池获取连接例子。

    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.2.11</version>
    </dependency>
    
    1
    2
    3
    4
    5
    DruidDataSource druidDataSource = new DruidDataSource();
    druidDataSource.setUrl("jdbc:mysql://localhost:3306/learnjdbc");
    druidDataSource.setUsername("root");
    druidDataSource.setPassword("puhou");
    // javax.sql.Connection 
    Connection connection = druidDataSource.getConnection();
    
    1
    2
    3
    4
    5
    6

    通过配置连接池的其他配置,就可以动态的调整数据库TCP连接数,不用临时单开线程创建连接,使得程序运行更加高效。Druid是用来管理数据库连接的。

    # ORM

    Object Relation Mapping 对象关系映射。将数据表和对象进行映射,把数据表的字段和对象的属性进行映射。直接通过操作对象属性类操作数据表,不用编写SQL语句。ORM是一种通过操作对象属性来操作数据表的思想。

    # JPA

    Java Persistence API的缩写,Java 持久层 API. Hibernate 是JPA 的一个实现。 JPA定义了一些实现ORM思想的方法

      Java Persistence API  --------> Hibernate  ----> Object ----> ORM ----> SQL Server
              |             --impl-->    |                           |
              ▼                          |                           | 
                                         ▼                           ▼
                                  Spring Data JPA               Generate SQL
    
    1
    2
    3
    4
    5

    # Mybatis

    Mybatis是一个基于Java的数据库操作框架,通过 xml 映射的方式简化了代码,可以将方法直接映射到SQL语句,也可以直接将运行结果映射到实体类中。这样在上层的操作中,实现了调用一个方法返回了一个带有数据库数据的实体类。省去了额外的JDBC步骤。

         EntieyType Dao.xxx();
         Dao ----> XML ----> SQL ----> SQL SERVER ----> RAW Data - --> XML  ----> Entity
             |<------------------------MyBtais --------------------------------->|
    
    1
    2
    3
    Mybatis_Plus
    GIS 基础知识- 坐标系、投影、EPSG:4326、EPSG:3857

    ← Mybatis_Plus GIS 基础知识- 坐标系、投影、EPSG:4326、EPSG:3857→

    最近更新
    01
    DefineSprintBootStarter
    03-23
    02
    Spring MVC 启动流程分析
    03-23
    03
    Redis
    03-23
    更多文章>
    Theme by Vdoing | Copyright © 2019-2024 Human0722 | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式