diff --git a/src/main/java/com/github/hcsp/sql/Sql.java b/src/main/java/com/github/hcsp/sql/Sql.java index 418a0df..0f00f49 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,15 @@ public String toString() { // | 2 | // +-----+ public static int countUsersWhoHaveBoughtGoods(Connection databaseConnection, Integer goodsId) throws SQLException { - return 0; + try (PreparedStatement preparedStatement = databaseConnection.prepareStatement("select count(distinct user_id) from \"ORDER\" where goods_id = ? ")) { + preparedStatement.setInt(1, goodsId); + try (ResultSet resultSet = preparedStatement.executeQuery()) { + while (resultSet.next()) { + return resultSet.getInt(1); + } + } + return -1; + } } /** @@ -100,7 +107,25 @@ 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 preparedStatement = databaseConnection.prepareStatement("select * from user order by id desc limit(?-1)*?,?")) { + preparedStatement.setInt(1, pageNum); + preparedStatement.setInt(2, pageSize); + preparedStatement.setInt(3, pageSize); + + List list; + try (ResultSet resultSet = preparedStatement.executeQuery()) { + 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,7 +157,23 @@ public String toString() { // | 3 | goods3 | 20 | // +----+--------+------+ public static List getGoodsAndGmv(Connection databaseConnection) throws SQLException { - return null; + try (PreparedStatement preparedStatement = databaseConnection.prepareStatement("select goods.id as id,name,sum(goods_num*goods_price) as gmv from goods\n" + + "join `order`\n" + + "on goods.id = `order`.goods_id\n" + + "group by goods.id\n" + + "order by gmv desc")) { + List list = new ArrayList<>(); + try (ResultSet resultSet = preparedStatement.executeQuery()) { + 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; + } + } } @@ -170,7 +211,24 @@ public String toString() { // | 6 | zhangsan | goods3 | 20 | // +----------+-----------+------------+-------------+ public static List getInnerJoinOrders(Connection databaseConnection) throws SQLException { - return null; + try (PreparedStatement preparedStatement = databaseConnection.prepareStatement("select `order`.id,user.name,goods.name,goods_price * goods_num as total_price from `order`\n" + + "join goods\n" + + "on goods.id = `order`.goods_id\n" + + "join user\n" + + "on user.id = `order`.user_id")) { + try (ResultSet resultSet = preparedStatement.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,9 +256,27 @@ public static List getInnerJoinOrders(Connection databaseConnection) thro // | 8 | NULL | NULL | 60 | // +----------+-----------+------------+-------------+ public static List getLeftJoinOrders(Connection databaseConnection) throws SQLException { - return null; + try (PreparedStatement preparedStatement = databaseConnection.prepareStatement("select `order`.id,user.name,goods.name,goods_price * goods_num as total_price from `order`\n" + + "left join goods\n" + + "on goods.id = `order`.goods_id\n" + + "left join user\n" + + "on user.id = `order`.user_id")) { + try (ResultSet resultSet = preparedStatement.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把测试数据灌入数据库 public static void main(String[] args) throws SQLException { File projectDir = new File(System.getProperty("basedir", System.getProperty("user.dir")));