从基础到实战:Java与数据库交互全攻略

106 阅读3分钟

从基础到实战:Java与数据库交互全攻略

在软件开发中,Java与数据库的交互是核心技能之一。本文将从SQL基础、JDBC使用、数据库设计原则到SQL高级查询与JOIN操作,全面梳理相关知识点,并结合实战代码示例,帮助读者快速掌握这一技能。

一、SQL基础

1.1 DDL(数据定义语言)

  • 创建表CREATE TABLE语句用于定义表的结构。
  • 删除表DROP TABLE语句用于删除表。
  • 修改表ALTER TABLE语句用于修改表结构,如添加字段。

1.2 基本SQL操作

  • 插入数据INSERT INTO语句用于向表中插入数据。
  • 删除数据DELETE FROM语句用于删除表中的数据。
  • 更新数据UPDATE语句用于更新表中的数据。
  • 查询数据SELECT语句用于从表中查询数据。

1.3 用户表示例

CREATE TABLE user (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(100),
    password VARCHAR(100),
    tel VARCHAR(20),
    avatar VARCHAR(100),
    created_at TIMESTAMP,
    updated_at TIMESTAMP
);

1.4 数据库命名规范

  • 关键词不区分大小写:如SELECTFROM等。
  • 命名风格:推荐使用下划线分隔(snake_case),如user_table
  • 字符串用单引号:如'value'
  • 注释用--:如-- This is a comment

二、JDBC基础

2.1 JDBC概述

Java Database Connectivity(JDBC)是Java与数据库交互的标准接口。通过JDBC,Java程序可以连接数据库、执行SQL语句并处理结果。

2.2 连接数据库

  • 连接字符串jdbc:mysql://localhost:3306/database_name
  • 用户名和密码:用于验证数据库连接。

2.3 Statement与PreparedStatement

  • Statement:用于执行SQL语句。
  • PreparedStatement:用于执行预编译的SQL语句,可防止SQL注入。

2.4 ResultSet

ResultSet用于存储查询结果,可以通过迭代器访问每一行数据。

三、数据库设计原则

3.1 表设计

  • 每个实体一张表:如用户表、商品表。
  • 每个实体都有主键:如id字段。
  • 按需建立索引:提高查询效率。

3.2 关系表设计

  • 外键关联:通过外键将不同表关联起来,保持数据一致性。
  • 逻辑删除:通过状态字段标记数据是否有效,避免物理删除。

四、SQL高级查询与JOIN操作

4.1 查询优化

  • 分页查询:使用LIMITOFFSET实现分页。
  • 排序:使用ORDER BY对结果进行排序。
  • 聚合函数:如COUNTSUMMAX等。

4.2 JOIN操作

  • INNER JOIN:返回两个表中匹配的记录。
  • LEFT JOIN:返回左表的所有记录,即使右表中没有匹配的记录。

4.3 多表查询示例

SELECT o.id, u.name AS user_name, g.NAME AS goods_name, o.GOODS_NUM * o.GOODS_PRICE AS total_price
FROM "ORDER" o
JOIN GOODS g ON o.GOODS_ID = g.id
JOIN USER u ON o.USER_ID = u.id;

五、Java与数据库交互实战

5.1 防止SQL注入

使用PreparedStatement代替Statement,避免SQL注入攻击。

5.2 资源管理

使用try-with-resources确保数据库连接和语句对象在使用后正确关闭。

5.3 实战代码示例

查询用户订单
public static List<Order> getOrders(Connection connection) throws SQLException {
    String sql = "SELECT o.id, u.name AS user_name, g.NAME AS goods_name, o.GOODS_NUM * o.GOODS_PRICE AS total_price " +
                 "FROM \"ORDER\" o JOIN GOODS g ON o.GOODS_ID = g.id JOIN USER u ON o.USER_ID = u.id";
    try (PreparedStatement statement = connection.prepareStatement(sql)) {
        ResultSet resultSet = statement.executeQuery();
        List<Order> orders = new ArrayList<>();
        while (resultSet.next()) {
            Order order = new Order();
            order.id = resultSet.getInt("id");
            order.userName = resultSet.getString("user_name");
            order.goodsName = resultSet.getString("goods_name");
            order.totalPrice = resultSet.getBigDecimal("total_price");
            orders.add(order);
        }
        return orders;
    }
}

六、总结

本文从SQL基础、JDBC使用、数据库设计原则到SQL高级查询与JOIN操作,全面介绍了Java与数据库交互的核心知识点,并结合实战代码示例加深理解。掌握这些知识,可以帮助开发者高效地进行数据库操作,提升程序的健壮性和可维护性。在实际开发中,合理设计数据库表结构、使用PreparedStatement防止SQL注入,并通过try-with-resources管理资源,是确保程序稳定运行的重要保障。