Java 数据访问简介

发布于 更新于
本文目录
  1. 概述
  2. JDBC
  3. 概述
  4. Java与MySQL数据类型对比
  5. JDBC主要对象
  6. 使用JDBC连接数据库
  7. 常用数据访问组件简介
  8. 概述
  9. SpringBoot常用的数据访问组件
  10. 最后

技术文章测试开发

在任何的程序语言体系中,数据持久化都是非常重要的功能点,尤其是关系型数据的持久化

概述

  • 在任何的程序语言体系中,数据持久化都是非常重要的功能点,尤其是关系型数据的持久化

  • Java技术体系中,从Java,到Spring,再到Spring Boot,都有丰富的数据访问组件

  • 但,各类的数据访问组件,都是基于Java最基础的JDBC进行了封装

  • 另外,数据访问组件需要考虑软件中事务、性能、分布式等需要

  • 本文主要针对MySQL数据库产品进行介绍

JDBC

概述

  • Java数据库连接(Java Database Connectivity),是Java API重要的组成部分,是应用程序与数据库之间的桥梁

  • 提供了一组接口,提供给不同的数据库产品实现

  • 不同的数据库产品根据JDBC的接口,提供不同版本的 JDBC驱动

  • Java语言中,使用相应数据库产品的驱动,就能连接指定数据库进行数据操作

  • 具体如下图

    image.png

Java与MySQL数据类型对比

  • 程序中,与数据库产品数据类型合理映射,也很重要

  • 具体如下图

    image.png

JDBC主要对象

  • JDBC提供了一组对象,实现最基础的数据访问

  • 主要对象有:

    • DriverManager:驱动管理,负责创建数据库连接

    • Connection:数据库连接,负责打开/关闭数据库连接,并负责创建Statement

    • Statement:数据处理,负责对数据库的查询、新增、修改、删除等操作;PreparedStatement,多次使用时,会先将SQL语句提交到数据库做预处理,多次使用能提高效率,支持?变量形式,避免SQL注入问题,相比Statement安全

    • ResultSet:查询结果集,提供对返回结果集的一系列操作,能够遍历获取数据表数据,提供了next、getString、getInt等方法获取数据

使用JDBC连接数据库

  • 操作步骤:

    1. 添加数据库产品厂商驱动jar包,方式有二 在项目的Project Sturcture中的Libraries中添加 将jar包复制到项目规划的目录(如lib),然后使用Add as Library…设置

    2. 加载驱动【非必需】,使用Class.forName(“com.mysql.jdbc.Driver”)

    3. 根据DriverManager获取Connection,此时需要数据库连接的url、用户名、密码

    4. 使用Connection创建Statement或PreparedStatement

    5. 使用Statement进行数据操作,如果是查询操作,返回ResultSet

    6. 对查询数据进行处理【可选】,可遍历ResultSet进行操作

    主要代码如下:

    //定义连接串、用户名、密码
            String url = "jdbc:mysql://localhost:3306/jdbc";
            String user = "root";
            String password = "root";
            try {
                //0.5、加载驱动程序,非必需
                Class.forName("com.mysql.cj.jdbc.Driver");
                //1、创建Connection
                Connection connection = DriverManager.getConnection(url, user, password);
                //2、使用Connection创建Statement
                Statement statement = connection.createStatement();
                //3、使用statement创建查询并返回ResultSet
                int ageOfCondition = 5;
                boolean isActiveOfCondition = true;
                ResultSet resultSet = statement.executeQuery("SELECT id, name, age,weight,is_active FROM student WHERE age>"+ageOfCondition+" and is_active = "+isActiveOfCondition);
                //4、遍历返回的数据集
                while (resultSet.next()) {
                    int id = resultSet.getInt(1);
                    String name = resultSet.getString(2);
                    int age = resultSet.getInt(3);
                    double weight = resultSet.getDouble(4);
                    boolean isActive = resultSet.getBoolean("is_active");
    
                    System.out.println(String.format("学号:%d,姓名:%s,年龄:%d,体重:%.2f,是否生效:%b",id,name,age,weight,isActive));
                }
                //关闭连接,一般放在finally里做关闭更合理
                statement.close();
                connection.close();
            } catch (Exception e) {
                e.printStackTrace();
            }

常用数据访问组件简介

概述

  • 程序中的各种数据,包括业务、日志、监控、行为等数据都需要存储起来,存储数据的就是数据库,常指关系型数据库

  • 任何一种编程语言或是框架都会提供对数据库进行操作的通用API

  • 各种数据库产品的厂商也会提供自身数据库产品针对常用语言的数据库驱动

  • Java亦是如此

  • Java提供了基础的数据访问接口JDBC,在此基础上,也衍生了一些功能更加强大的数据访问的第三方库或组件

SpringBoot常用的数据访问组件

  • 现在企业级应用中,Java技术栈多使用Spring Boot

  • 在Spring Boot应用时,可根据需要,使用多种数据访问组件,比较典型的有:

    • JDBC:Java语言提供的最基础的数据访问

    • JdbcTemplate:Spring提供的数据操作组件,比JDBC操作更加方便

    • MyBatis:一个优秀的,也是最简单的持久层框架,可通过XML或注解来配置数据表与实体关系,灵活性高;但需要有一定的SQL语言基础

    • MyBatis Plus:基于MyBatis的一款高效率数据访问组件 JPA(Java Persistence API):Java的一个持久层API,使用简单方便,不需要程序中使用SQL语句,有一套JPQL支持对象式的查询相关操作

    • Hibernate实现了JPA,并提供了;提供标准的ORM处理;且具有移植性好、提供缓存、HQL等特点,使用简单

最后

  • 由于数据访问是一个应用程序非常重要的部分,除了了解常用的工具,还要针对业务的需要,熟练使用一种或多种进行熟练编码

来源:testingpai

继续阅读