From b4edcf3342b957a7d859174f3f6ed9999c1334d4 Mon Sep 17 00:00:00 2001 From: lance <491799643@qq.com> Date: Sun, 31 May 2020 11:17:24 +0800 Subject: [PATCH 1/3] =?UTF-8?q?select=E5=AE=9E=E6=88=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/github/hcsp/sql/Sql.java | 84 +++++++++++++++++++--- 1 file changed, 76 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/github/hcsp/sql/Sql.java b/src/main/java/com/github/hcsp/sql/Sql.java index 418a0df..e486b2d 100644 --- a/src/main/java/com/github/hcsp/sql/Sql.java +++ b/src/main/java/com/github/hcsp/sql/Sql.java @@ -2,9 +2,8 @@ package com.github.hcsp.sql; import java.io.File; import java.math.BigDecimal; -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.SQLException; +import java.sql.*; +import java.util.ArrayList; import java.util.List; public class Sql { @@ -82,7 +81,16 @@ public String toString() { // | 2 | // +-----+ public static int countUsersWhoHaveBoughtGoods(Connection databaseConnection, Integer goodsId) throws SQLException { - return 0; + String sql = "select count(distinct user_id) from \"ORDER\" where goods_id = ? ;"; + try (PreparedStatement preparedStatement = databaseConnection.prepareStatement(sql)) { + preparedStatement.setInt(1, goodsId); + ResultSet resultSet = preparedStatement.executeQuery(); + if (resultSet.next()) { + return resultSet.getInt(1); + } else { + return -1; + } + } } /** @@ -100,7 +108,22 @@ public static int countUsersWhoHaveBoughtGoods(Connection databaseConnection, In // | 1 | zhangsan | tel1 | beijing | // +----+----------+------+----------+ public static List getUsersByPageOrderedByIdDesc(Connection databaseConnection, int pageNum, int pageSize) throws SQLException { - return null; + List userList = new ArrayList<>(); + String sql = "select * from user order by id desc limit ?,?; "; + try (PreparedStatement preparedStatement = databaseConnection.prepareStatement(sql)) { + preparedStatement.setInt(1, (pageNum - 1) * pageSize); + preparedStatement.setInt(2, pageSize); + ResultSet resultSet = preparedStatement.executeQuery(); + while (resultSet.next()) { + User user = new User(); + user.id = resultSet.getInt(1); + user.name = resultSet.getString(2); + user.tel = resultSet.getString(3); + user.address = resultSet.getString(4); + userList.add(user); + } + } + return userList; } // 商品及其营收 @@ -132,7 +155,22 @@ public String toString() { // | 3 | goods3 | 20 | // +----+--------+------+ public static List getGoodsAndGmv(Connection databaseConnection) throws SQLException { - return null; + List goodsAndGmvList = new ArrayList<>(); + try (PreparedStatement statement = databaseConnection.prepareStatement("select GOODS_ID, GOODS.NAME, sum(GOODS_NUM * GOODS_PRICE) as total\n" + + "from `ORDER`\n" + + " join GOODS on `ORDER`.GOODS_ID = GOODS.ID\n" + + "group by GOODS_ID\n" + + "order by total desc")) { + ResultSet resultSet = statement.executeQuery(); + while (resultSet.next()) { + GoodsAndGmv goodsAndGmv = new GoodsAndGmv(); + goodsAndGmv.goodsId = resultSet.getInt(1); + goodsAndGmv.goodsName = resultSet.getString(2); + goodsAndGmv.gmv = resultSet.getBigDecimal(3); + goodsAndGmvList.add(goodsAndGmv); + } + } + return goodsAndGmvList; } @@ -170,7 +208,22 @@ public String toString() { // | 6 | zhangsan | goods3 | 20 | // +----------+-----------+------------+-------------+ public static List getInnerJoinOrders(Connection databaseConnection) throws SQLException { - return null; + List orderList = new ArrayList<>(); + try (PreparedStatement statement = databaseConnection.prepareStatement("select \"ORDER\".ID, U.NAME, G.NAME, GOODS_NUM * GOODS_PRICE\n" + + "from `ORDER`\n" + + " join USER U on `ORDER`.USER_ID = U.ID\n" + + " join GOODS G on `ORDER`.GOODS_ID = G.ID")) { + ResultSet resultSet = statement.executeQuery(); + while (resultSet.next()) { + Order order = new Order(); + order.id = resultSet.getInt(1); + order.userName = resultSet.getString(2); + order.goodsName = resultSet.getString(3); + order.totalPrice = resultSet.getBigDecimal(4); + orderList.add(order); + } + } + return orderList; } /** @@ -198,7 +251,22 @@ public static List getInnerJoinOrders(Connection databaseConnection) thro // | 8 | NULL | NULL | 60 | // +----------+-----------+------------+-------------+ public static List getLeftJoinOrders(Connection databaseConnection) throws SQLException { - return null; + List orderList = new ArrayList<>(); + try (PreparedStatement statement = databaseConnection.prepareStatement("select \"ORDER\".ID, U.NAME, G.NAME, GOODS_NUM * GOODS_PRICE\n" + + "from `ORDER`\n" + + " left join USER U on `ORDER`.USER_ID = U.ID\n" + + " left join GOODS G on `ORDER`.GOODS_ID = G.ID")) { + ResultSet resultSet = statement.executeQuery(); + while (resultSet.next()) { + Order order = new Order(); + order.id = resultSet.getInt(1); + order.userName = resultSet.getString(2); + order.goodsName = resultSet.getString(3); + order.totalPrice = resultSet.getBigDecimal(4); + orderList.add(order); + } + } + return orderList; } // 注意,运行这个方法之前,请先运行mvn initialize把测试数据灌入数据库 From 3e27a52470d6116b0edd260c00ff7b2bcbe7ee10 Mon Sep 17 00:00:00 2001 From: lance <491799643@qq.com> Date: Sun, 31 May 2020 12:31:41 +0800 Subject: [PATCH 2/3] =?UTF-8?q?select=E5=AE=9E=E6=88=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/github/hcsp/sql/Sql.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/github/hcsp/sql/Sql.java b/src/main/java/com/github/hcsp/sql/Sql.java index e486b2d..ff0fb9c 100644 --- a/src/main/java/com/github/hcsp/sql/Sql.java +++ b/src/main/java/com/github/hcsp/sql/Sql.java @@ -70,7 +70,7 @@ public String toString() { /** * 题目1: * 查询有多少所有用户曾经买过指定的商品 - * + * @param databaseConnection 数据库连接 * @param goodsId 指定的商品ID * @return 有多少用户买过这个商品 */ @@ -96,7 +96,7 @@ public static int countUsersWhoHaveBoughtGoods(Connection databaseConnection, In /** * 题目2: * 分页查询所有用户,按照ID倒序排列 - * + * @param databaseConnection 数据库连接 * @param pageNum 第几页,从1开始 * @param pageSize 每页有多少个元素 * @return 指定页中的用户 @@ -140,6 +140,7 @@ public String toString() { /** * 题目3: + * @param databaseConnection 数据库连接 * 查询所有的商品及其销售额,按照销售额从大到小排序 */ // 预期的结果应该如图所示 @@ -189,6 +190,7 @@ public String toString() { /** * 题目4: + * @param databaseConnection 数据库连接 * 查询订单信息,只查询用户名、商品名齐全的订单,即INNER JOIN方式 */ // 预期的结果为: @@ -228,6 +230,7 @@ public static List getInnerJoinOrders(Connection databaseConnection) thro /** * 题目5: + * @param databaseConnection 数据库连接 * 查询所有订单信息,哪怕它的用户名、商品名缺失,即LEFT JOIN方式 */ // 预期的结果为: From f0fb091397e6237be6400bc36f91b511b52a8773 Mon Sep 17 00:00:00 2001 From: lance <491799643@qq.com> Date: Sun, 31 May 2020 12:54:38 +0800 Subject: [PATCH 3/3] =?UTF-8?q?select=E5=AE=9E=E6=88=98=E5=8F=8AJDBC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/github/hcsp/sql/Sql.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/com/github/hcsp/sql/Sql.java b/src/main/java/com/github/hcsp/sql/Sql.java index ff0fb9c..d08f0f0 100644 --- a/src/main/java/com/github/hcsp/sql/Sql.java +++ b/src/main/java/com/github/hcsp/sql/Sql.java @@ -142,6 +142,7 @@ public String toString() { * 题目3: * @param databaseConnection 数据库连接 * 查询所有的商品及其销售额,按照销售额从大到小排序 + * @return 返回商品及销售额表 */ // 预期的结果应该如图所示 // +----+--------+------+ @@ -192,6 +193,7 @@ public String toString() { * 题目4: * @param databaseConnection 数据库连接 * 查询订单信息,只查询用户名、商品名齐全的订单,即INNER JOIN方式 + * @return 返回订单信息 */ // 预期的结果为: // +----------+-----------+------------+-------------+ @@ -232,6 +234,7 @@ public static List getInnerJoinOrders(Connection databaseConnection) thro * 题目5: * @param databaseConnection 数据库连接 * 查询所有订单信息,哪怕它的用户名、商品名缺失,即LEFT JOIN方式 + * @return 返回订单信息 */ // 预期的结果为: // +----------+-----------+------------+-------------+