ADD file via upload

daoimpl
nxist2202005014 2 years ago
parent b8df35d5e2
commit b527bd4e99

@ -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语句确保了在方法结束时数据库连接、语句对象和结果集会被正确关闭从而避免了资源泄露问题。
Loading…
Cancel
Save