一 传统 JDBC 连接数据库

环境:
IDEA 2021.2.2
Mysql 8.0.26
Java 11
Maven (idea 自带)

首先在 pom.xml 中引入 mysql 驱动

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.18</version>
</dependency>

数据库中建一个 User 表并造一些数据
在这里插入图片描述

User 类的定义和数据库中一致

@Data
public class User {

    private Long id;
    private String username;
    private Long age;
}

接下来是主代码,用传统 JDBC 来连接数据库

/**
 * 传统 JDBC 方法连接数据库
 */
public class JDBC {

    public static void main(String[] args) {
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        User user = new User();
        try {
            /* 加载数据库驱动 */
            Class.forName("com.mysql.cj.jdbc.Driver");

            /* 通过驱动管理类获得数据库链接 */
            connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/demo?characterEncoding=utf-8&serverTimezone=UTC", "root", "root");

            /* 定义 sql 语句,符号 ? 表示占位符 */
            String sql = "select * from user where username = ?";

            /* 获取预处理 statement */
            preparedStatement = connection.prepareStatement(sql);

            /* 设置参数,第一个参数为 sql 语句中参数的序号,(从 1 开始),第二个参数是设置的参数值 */
            preparedStatement.setString(1, "张三");

            /* 向数据库中发出 sql 执行查询,查询出结果集 */
            resultSet = preparedStatement.executeQuery();

            /* 遍历查询结果集 */
            while (resultSet.next()) {
                Long id = resultSet.getLong("id");
                String username = resultSet.getString("username");
                Long age = resultSet.getLong("age");
                user.setId(id);
                user.setAge(age);
                user.setUsername(username);
                System.out.println(user);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (resultSet != null) {
                try {
                    resultSet.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            if (preparedStatement != null) {
                try {
                    preparedStatement.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

输出:
在这里插入图片描述

分析一下传统 JDBC 的缺点:
1 加载驱动、编写 sql 语句均存在硬编码问题,并且需要手动封装返回结果。
2 每查询一次都要连接和释放数据库,造成资源浪费,影响系统性能。

初步解决思路:
1 使用配置文件。
2 使用连接池。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值