MyBatis-入门-JDBC

JDBC介绍

  • JDBC(Java DataBase Connectivity)就是使用java语言操作关系型数据库的一套API
    • java程序通过使用JDBC这套API来对不同关系型数据库进行操作,但是不同数据库底层的实现也存在很大的差异,那么操作方法也不一样,各个厂商提供各自数据库JDBC的实现,最后在编写java项目时,使用面向接口编程,使用JDBC中的提供的接口来操作即可,因为各个厂商提供了各自的数据库底层的JDBC规范的实现(即数据库的驱动)

本质

  • sun公司官方定义的一套操作所有关系型数据库的规范,即接口
  • 各个数据库厂商去实现这套接口,提供数据库驱动jar包
  • 我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类

JDBC示例

  • 具体代码
  • import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    public class JdbcExample {
    
        public static void main(String[] args) {
            // 数据库连接信息
            String url = "jdbc:mysql://localhost:3306/mydatabase";
            String username = "your-username";
            String password = "your-password";
    
            // 声明 JDBC 对象
            Connection conn = null;
            Statement stmt = null;
            ResultSet rs = null;
    
            try {
                // 连接到数据库
                conn = DriverManager.getConnection(url, username, password);
    
                // 创建 Statement 对象,用于执行 SQL 语句
                stmt = conn.createStatement();
    
                // 执行查询语句
                String sql = "SELECT * FROM customers";
                rs = stmt.executeQuery(sql);
    
                // 处理查询结果
                while (rs.next()) {
                    int id = rs.getInt("id");
                    String name = rs.getString("name");
                    String email = rs.getString("email");
    
                    // 输出结果
                    System.out.println("ID: " + id + ", Name: " + name + ", Email: " + email);
                }
            } catch (SQLException e) {
                e.printStackTrace();
            } finally {
                // 关闭 JDBC 对象
                try {
                    if (rs != null) {
                        rs.close();
                    }
                    if (stmt != null) {
                        stmt.close();
                    }
                    if (conn != null) {
                        conn.close();
                    }
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    
  •  JDBC存在的问题
    • 冗余的代码:使用JDBC进行数据库操作涉及大量的样板式代码,例如打开连接、关闭连接、处理异常等。这些重复的代码容易导致冗余和重复劳动,降低开发效率。

    • 低级别的接口:JDBC是一个相对底层的接口,需要开发人员自己处理很多细节,如数据库连接管理、事务处理、SQL语句拼接等。这使得开发过程变得复杂,尤其是对于初学者来说。

    • 安全性问题:通过JDBC直接将用户输入的值插入SQL语句中容易导致SQL注入攻击。开发人员需要自行处理输入验证和参数化查询,以确保应用程序的安全性。

    • 性能问题:JDBC每次数据库操作都需要建立连接、执行查询、处理结果,并在完成后关闭连接。这种连接的创建和销毁过程对性能有一定影响,特别是在频繁的数据库访问场景下。

    • 缺乏对象关系映射(ORM)支持:JDBC提供的是一种基于关系型数据库的底层操作接口,对于对象导向编程而言,需要手动将数据结果转化为对象。这增加了开发工作量,并且容易引入错误。

你可能感兴趣的:(Java,Web学习跟踪笔记,mybatis)