手把手教你写一个java的orm(四)

时间:2024-12-07 14:06:26

开始准备生成sql

在上一篇里,我们已经取到了我们在生成sql语句中所需要的信息,这一篇里我们开始根据class来生成我们需要的sql。在这之前我们先确认几件事情

  1. sql里的参数我们使用占位符的形式。

    这里用的是jdbc中的PreparedStatement,sql中的参数使用“”的形式。

    大致上是这样的:

    Connection connection = dataSource.getConnection();
    PreparedStatement preparedStatement = connection.prepareStatement("select * from `user` where `status` = ? ;");
    preparedStatement.setObject(1, 0);
    ResultSet resultSet = preparedStatement.executeQuery();

    但是这样的话我们每次执行都需要手写这些执行sql的繁琐的代码,我在这里选择使用spring-jdbc中的JdbcTemplte。这样我就只需要生成sql,然后使用JdbcTemplte里的方法来执行sql就好了。

  2. 我们只生成单表的增删改查,不涉及复杂sql。

  3. 不贴出完整的代码,以说明思路为主。

    毕竟这个是已经写好的代码,地址在:https://github.com/hjx601496320/JdbcPlus 。所有代码可以在这里找到。

分析sql

我们主要解决的是增删该查的问题,所以我们先写如何生成一个新增的sql。

我么先观察一下sql一般来说都有什么构成。现在先放一个例子出来:

  1. insert

    INSERT INTO user (name, id, create_date, age, mark, status)
    VALUES (?, ?, ?, ?, ?, ?);
  2. delete

    DELETE
    FROM user
    WHERE id = ?
  3. update

    UPDATE user
    SET name = ?,
    id = ?,
    create_date = ?,
    age = ?,
    status = ?
    WHERE id = ?
  4. select

    SELECT name, id, create_date, age, mark, status
    FROM user
    WHERE id = ?

通过观察上面的sql,可以发现其中有一些共性:

  1. 都有表的名称。
  2. 基本上都包含表中的字段名称。
  3. 还有参数。
  4. 以上都是废话