|
|
|
|
@ -0,0 +1,151 @@
|
|
|
|
|
package flowershop.daoimpl;
|
|
|
|
|
|
|
|
|
|
import java.sql.Connection;
|
|
|
|
|
import java.sql.PreparedStatement;
|
|
|
|
|
import java.sql.ResultSet;
|
|
|
|
|
import java.sql.SQLException;
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
|
|
import flowershop.dao.OrderDao;
|
|
|
|
|
import flowershop.model.Order;
|
|
|
|
|
|
|
|
|
|
public class OrderDaoImpl implements OrderDao {
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public List<Order> findAll() {
|
|
|
|
|
//方法用于查询所有订单信息,执行了一个SQL查询语句,将查询结果封装为Order对象列表并返回。
|
|
|
|
|
String sql = "select orderid,userid,orderdate from order";
|
|
|
|
|
List<Order> list = new ArrayList<Order>();
|
|
|
|
|
try (// 2.创建数据库连接
|
|
|
|
|
Connection conn = Jdbc.getConnection();
|
|
|
|
|
// 3.创建语句对象
|
|
|
|
|
PreparedStatement pstmt = conn.prepareStatement(sql);
|
|
|
|
|
// 4.绑定参数
|
|
|
|
|
// 5.执行查询
|
|
|
|
|
ResultSet rs = pstmt.executeQuery()) {
|
|
|
|
|
// 6.遍历结果集
|
|
|
|
|
while (rs.next()) {
|
|
|
|
|
Order order = new Order();
|
|
|
|
|
order.setOrderid(rs.getLong("orderid"));
|
|
|
|
|
order.setOrderdate(rs.getDate("orderdate"));
|
|
|
|
|
order.setUserid(rs.getString("userid"));
|
|
|
|
|
list.add(order);
|
|
|
|
|
}
|
|
|
|
|
} catch (SQLException e) {
|
|
|
|
|
// TODO 自动生成的 catch 块
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
return list;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public Order findById(String id) {
|
|
|
|
|
//方法根据订单ID查询特定订单信息,执行了一个带参数的SQL查询语句,
|
|
|
|
|
//将查询结果封装为Orderwjx对象并返回。在方法结束时,关闭了数据库连接。
|
|
|
|
|
Connection conn = null;
|
|
|
|
|
PreparedStatement pstmt = null;
|
|
|
|
|
ResultSet rs = null;
|
|
|
|
|
try {
|
|
|
|
|
// 2.创建数据库连接
|
|
|
|
|
conn = Jdbc.getConnection(); //1.加载驱动程序
|
|
|
|
|
String sql = "select orderid,userid,orderdate,status,amount from order where orderid = ?";
|
|
|
|
|
// 3.创建语句对象
|
|
|
|
|
pstmt = conn.prepareStatement(sql);
|
|
|
|
|
// 4.绑定参数
|
|
|
|
|
pstmt.setString(1, id);
|
|
|
|
|
// 5.执行查询
|
|
|
|
|
rs = pstmt.executeQuery();
|
|
|
|
|
// 6.遍历结果集
|
|
|
|
|
if (rs.next()) {
|
|
|
|
|
Order order = new Order();
|
|
|
|
|
order.setOrderid(rs.getLong("orderid"));
|
|
|
|
|
order.setUserid(rs.getString("userid"));
|
|
|
|
|
order.setOrderdate(rs.getDate("orderdate"));
|
|
|
|
|
return order;
|
|
|
|
|
}
|
|
|
|
|
} catch (SQLException e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
} finally {
|
|
|
|
|
Jdbc.close(rs, pstmt, conn);
|
|
|
|
|
}
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public int create(Order order) {
|
|
|
|
|
//方法用于插入新的订单信息,执行了一个带参数的SQL插入语句,并打印出成功插入的数据条数。
|
|
|
|
|
String sql = "insert into order(orderid,userid,orderdate,status,amount) values(?,?,?,?,?)";
|
|
|
|
|
try (// 2.创建数据库连接
|
|
|
|
|
Connection conn = Jdbc.getConnection();
|
|
|
|
|
// 3.创建语句对象
|
|
|
|
|
PreparedStatement pstmt = conn.prepareStatement(sql);) {
|
|
|
|
|
// 4.绑定参数
|
|
|
|
|
pstmt.setLong(1, order.getOrderid());
|
|
|
|
|
pstmt.setString(2, order.getUserid());
|
|
|
|
|
// utilDate转化为sql date
|
|
|
|
|
java.util.Date date = order.getOrderdate();
|
|
|
|
|
// java.sql.Date date = new java.sql.Date(now.getTime());
|
|
|
|
|
// Timestamp比Date更准确
|
|
|
|
|
pstmt.setDate(3, new java.sql.Date(date.getTime()));
|
|
|
|
|
pstmt.setTimestamp(3, new java.sql.Timestamp(date.getTime()));
|
|
|
|
|
pstmt.setInt(4, order.getStatus());
|
|
|
|
|
pstmt.setDouble(5, order.getAmount());
|
|
|
|
|
// 5.执行
|
|
|
|
|
int affectedRows = pstmt.executeUpdate();
|
|
|
|
|
System.out.printf("成功插入%d数据.\n", affectedRows);
|
|
|
|
|
} catch (SQLException e) {
|
|
|
|
|
// TODO 自动生成的 catch 块
|
|
|
|
|
return -1;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public int modify(Order order) {
|
|
|
|
|
//根据订单ID更新订单金额。
|
|
|
|
|
String sql = "update order set amount = ? where orderid = ?";
|
|
|
|
|
try ( // 2.创建数据库连接
|
|
|
|
|
Connection conn = Jdbc.getConnection();
|
|
|
|
|
// 3. 创建语句对象
|
|
|
|
|
PreparedStatement pstmt= conn.prepareStatement(sql)
|
|
|
|
|
) {
|
|
|
|
|
// 4. 绑定参数
|
|
|
|
|
pstmt.setDouble(1, order.getAmount());
|
|
|
|
|
pstmt.setLong(2, order.getOrderid());
|
|
|
|
|
// 5. 执行修改(C、U、D)
|
|
|
|
|
int affectedRows = pstmt.executeUpdate();
|
|
|
|
|
System.out.printf("成功更新%d条数据。\n", affectedRows);
|
|
|
|
|
} catch (SQLException e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public int remove(Order order) {
|
|
|
|
|
//removewjx(Orderwjx orderwjx)方法用于删除订单信息,执行了一个带参数的SQL删除语句
|
|
|
|
|
//并打印出成功删除的数据条数。
|
|
|
|
|
String sql = "delete from order where orderid = ?";
|
|
|
|
|
try ( // 2.创建数据库连接
|
|
|
|
|
Connection conn = Jdbc.getConnection();
|
|
|
|
|
// 3. 创建语句对象
|
|
|
|
|
PreparedStatement pstmt = conn.prepareStatement(sql)) {
|
|
|
|
|
// 4. 绑定参数
|
|
|
|
|
pstmt.setLong(1, order.getOrderid());
|
|
|
|
|
// 5. 执行修改(C、U、D)
|
|
|
|
|
int affectedRows = pstmt.executeUpdate();
|
|
|
|
|
System.out.printf("成功删除%d条数据。\n", affectedRows);
|
|
|
|
|
} catch (SQLException e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//try-with-resources语句,确保了在方法结束时数据库连接、语句对象和结果集会被正确关闭,从而避免了资源泄露问题。
|
|
|
|
|
|