From b8bd367df8870f9fb299dd7332587520c95cc174 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cidpeng=E2=80=9D?= <630606938@qq.com> Date: Thu, 23 Sep 2021 12:08:58 +0800 Subject: [PATCH 1/2] =?UTF-8?q?select=E5=92=8Cjdbc=E7=9A=84=E4=BD=BF?= =?UTF-8?q?=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/github/hcsp/sql/Sql.java | 94 +++++++++++++++++++--- 1 file changed, 84 insertions(+), 10 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..f6e3650 100644 --- a/src/main/java/com/github/hcsp/sql/Sql.java +++ b/src/main/java/com/github/hcsp/sql/Sql.java @@ -1,10 +1,10 @@ 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,14 +82,23 @@ public String toString() { // | 2 | // +-----+ public static int countUsersWhoHaveBoughtGoods(Connection databaseConnection, Integer goodsId) throws SQLException { - return 0; + try (PreparedStatement statement = databaseConnection.prepareStatement("select count(*)\n" + + "from \"ORDER\"\n" + + "where GOODS_ID = ?")) { + statement.setInt(1, goodsId); + ResultSet resultSet = statement.executeQuery(); + while (resultSet.next()) { + return resultSet.getInt(1); + } + } + return -1; } /** * 题目2: * 分页查询所有用户,按照ID倒序排列 * - * @param pageNum 第几页,从1开始 + * @param pageNum 第几页,从1开始 * @param pageSize 每页有多少个元素 * @return 指定页中的用户 */ @@ -100,7 +109,24 @@ 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; + try (PreparedStatement statement = databaseConnection.prepareStatement("select *\n" + + "from USER\n" + + "order by id desc\n" + + "limit ?,?\n")) { + statement.setInt(1, pageNum); + statement.setInt(2, pageSize); + ResultSet resultSet = statement.executeQuery(); + List list = new ArrayList<>(); + 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); + list.add(user); + } + return list; + } } // 商品及其营收 @@ -132,10 +158,24 @@ public String toString() { // | 3 | goods3 | 20 | // +----+--------+------+ public static List getGoodsAndGmv(Connection databaseConnection) throws SQLException { - return null; + try (PreparedStatement statement = databaseConnection.prepareStatement("select GOODS_ID,GOODS.NAME, sum(GOODS_NUM * GOODS_PRICE) as gmv\n" + + "from \"ORDER\"\n" + + "join GOODS on \"ORDER\".GOODS_ID = GOODS.ID\n" + + "group by GOODS_ID\n" + + "order by gmv desc")) { + ResultSet resultSet = statement.executeQuery(); + List list = new ArrayList<>(); + while (resultSet.next()) { + GoodsAndGmv goodsAndGmv = new GoodsAndGmv(); + goodsAndGmv.goodsId = resultSet.getInt(1); + goodsAndGmv.goodsName = resultSet.getString(2); + goodsAndGmv.gmv = resultSet.getBigDecimal(3); + list.add(goodsAndGmv); + } + return list; + } } - // 订单详细信息 public static class Order { Integer id; // 订单ID @@ -170,7 +210,24 @@ public String toString() { // | 6 | zhangsan | goods3 | 20 | // +----------+-----------+------------+-------------+ public static List getInnerJoinOrders(Connection databaseConnection) throws SQLException { - return null; + try (PreparedStatement statement = databaseConnection.prepareStatement("select \"ORDER\".id,USER.NAME,GOODS.NAME,(GOODS_NUM * GOODS_PRICE) as totalPrice\n" + + "from \"ORDER\"\n" + + " inner join GOODS\n" + + " on \"ORDER\".GOODS_ID = GOODS.ID\n" + + " inner join USER\n" + + " on \"ORDER\".USER_ID = USER.ID")) { + ResultSet resultSet = statement.executeQuery(); + List list = new ArrayList<>(); + 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); + list.add(order); + } + return list; + } } /** @@ -198,7 +255,24 @@ public static List getInnerJoinOrders(Connection databaseConnection) thro // | 8 | NULL | NULL | 60 | // +----------+-----------+------------+-------------+ public static List getLeftJoinOrders(Connection databaseConnection) throws SQLException { - return null; + try (PreparedStatement statement = databaseConnection.prepareStatement("select \"ORDER\".id,USER.NAME,GOODS.NAME,(GOODS_NUM * GOODS_PRICE) as totalPrice\n" + + "from \"ORDER\"\n" + + " LEFT join GOODS\n" + + " on \"ORDER\".GOODS_ID = GOODS.ID\n" + + " LEFT join USER\n" + + " on \"ORDER\".USER_ID = USER.ID")) { + ResultSet resultSet = statement.executeQuery(); + List list = new ArrayList<>(); + 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); + list.add(order); + } + return list; + } } // 注意,运行这个方法之前,请先运行mvn initialize把测试数据灌入数据库 From 9f106aa0a9b0e9524cea93c90580fc143116549a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cidpeng=E2=80=9D?= <630606938@qq.com> Date: Sat, 25 Sep 2021 16:54:45 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/github/hcsp/sql/Sql.java | 56 ++++++++++++---------- 1 file changed, 30 insertions(+), 26 deletions(-) diff --git a/src/main/java/com/github/hcsp/sql/Sql.java b/src/main/java/com/github/hcsp/sql/Sql.java index f6e3650..86a8e08 100644 --- a/src/main/java/com/github/hcsp/sql/Sql.java +++ b/src/main/java/com/github/hcsp/sql/Sql.java @@ -3,7 +3,11 @@ import java.io.File; import java.math.BigDecimal; -import java.sql.*; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.DriverManager; import java.util.ArrayList; import java.util.List; @@ -81,10 +85,10 @@ public String toString() { // +-----+ // | 2 | // +-----+ - public static int countUsersWhoHaveBoughtGoods(Connection databaseConnection, Integer goodsId) throws SQLException { - try (PreparedStatement statement = databaseConnection.prepareStatement("select count(*)\n" + - "from \"ORDER\"\n" + - "where GOODS_ID = ?")) { + public static int countUsersWhoHaveBoughtGoods(Connection databaseConnection, Integer goodsId) throws SQLException, SQLException { + try (PreparedStatement statement = databaseConnection.prepareStatement("select count(*)\n" + + "from \"ORDER\"\n" + + "where GOODS_ID = ?")) { statement.setInt(1, goodsId); ResultSet resultSet = statement.executeQuery(); while (resultSet.next()) { @@ -109,10 +113,10 @@ public static int countUsersWhoHaveBoughtGoods(Connection databaseConnection, In // | 1 | zhangsan | tel1 | beijing | // +----+----------+------+----------+ public static List getUsersByPageOrderedByIdDesc(Connection databaseConnection, int pageNum, int pageSize) throws SQLException { - try (PreparedStatement statement = databaseConnection.prepareStatement("select *\n" + - "from USER\n" + - "order by id desc\n" + - "limit ?,?\n")) { + try (PreparedStatement statement = databaseConnection.prepareStatement("select *\n" + + "from USER\n" + + "order by id desc\n" + + "limit ?,?\n")) { statement.setInt(1, pageNum); statement.setInt(2, pageSize); ResultSet resultSet = statement.executeQuery(); @@ -158,11 +162,11 @@ public String toString() { // | 3 | goods3 | 20 | // +----+--------+------+ public static List getGoodsAndGmv(Connection databaseConnection) throws SQLException { - try (PreparedStatement statement = databaseConnection.prepareStatement("select GOODS_ID,GOODS.NAME, sum(GOODS_NUM * GOODS_PRICE) as gmv\n" + - "from \"ORDER\"\n" + - "join GOODS on \"ORDER\".GOODS_ID = GOODS.ID\n" + - "group by GOODS_ID\n" + - "order by gmv desc")) { + try (PreparedStatement statement = databaseConnection.prepareStatement("select GOODS_ID,GOODS.NAME, sum(GOODS_NUM * GOODS_PRICE) as gmv\n" + + "from \"ORDER\"\n" + + "join GOODS on \"ORDER\".GOODS_ID = GOODS.ID\n" + + "group by GOODS_ID\n" + + "order by gmv desc")) { ResultSet resultSet = statement.executeQuery(); List list = new ArrayList<>(); while (resultSet.next()) { @@ -210,12 +214,12 @@ public String toString() { // | 6 | zhangsan | goods3 | 20 | // +----------+-----------+------------+-------------+ public static List getInnerJoinOrders(Connection databaseConnection) throws SQLException { - try (PreparedStatement statement = databaseConnection.prepareStatement("select \"ORDER\".id,USER.NAME,GOODS.NAME,(GOODS_NUM * GOODS_PRICE) as totalPrice\n" + - "from \"ORDER\"\n" + - " inner join GOODS\n" + - " on \"ORDER\".GOODS_ID = GOODS.ID\n" + - " inner join USER\n" + - " on \"ORDER\".USER_ID = USER.ID")) { + try (PreparedStatement statement = databaseConnection.prepareStatement("select \"ORDER\".id,USER.NAME,GOODS.NAME,(GOODS_NUM * GOODS_PRICE) as totalPrice\n" + + "from \"ORDER\"\n" + + " inner join GOODS\n" + + " on \"ORDER\".GOODS_ID = GOODS.ID\n" + + " inner join USER\n" + + " on \"ORDER\".USER_ID = USER.ID")) { ResultSet resultSet = statement.executeQuery(); List list = new ArrayList<>(); while (resultSet.next()) { @@ -255,12 +259,12 @@ public static List getInnerJoinOrders(Connection databaseConnection) thro // | 8 | NULL | NULL | 60 | // +----------+-----------+------------+-------------+ public static List getLeftJoinOrders(Connection databaseConnection) throws SQLException { - try (PreparedStatement statement = databaseConnection.prepareStatement("select \"ORDER\".id,USER.NAME,GOODS.NAME,(GOODS_NUM * GOODS_PRICE) as totalPrice\n" + - "from \"ORDER\"\n" + - " LEFT join GOODS\n" + - " on \"ORDER\".GOODS_ID = GOODS.ID\n" + - " LEFT join USER\n" + - " on \"ORDER\".USER_ID = USER.ID")) { + try (PreparedStatement statement = databaseConnection.prepareStatement("select \"ORDER\".id,USER.NAME,GOODS.NAME,(GOODS_NUM * GOODS_PRICE) as totalPrice\n" + + "from \"ORDER\"\n" + + " LEFT join GOODS\n" + + " on \"ORDER\".GOODS_ID = GOODS.ID\n" + + " LEFT join USER\n" + + " on \"ORDER\".USER_ID = USER.ID")) { ResultSet resultSet = statement.executeQuery(); List list = new ArrayList<>(); while (resultSet.next()) {