这两个实体:窗口:窗口编号 窗口名字 餐饮类型 负责人手机号入账记录:记录编号 入账时间 入账金额 编写jdbc相关代码model dao service完成关于记录的多条件查询:要求:根据 日期年月日、金额范围小值-大值、窗口编号查询入账记录;输入查询条件打印查询结果打印内容包括:记录编号 入账时间 入账金额 窗口编号 窗口名 餐饮类型是名字不是数字sql代码
以下是相关代码的示例:
- 实体类 Window.java:
public class Window { private int windowId; private String windowName; private String cateringType; private String managerPhoneNumber;
// 省略getter和setter方法
}
- 实体类 AccountRecord.java:
public class AccountRecord { private int recordId; private Date recordDate; private double amount; private int windowId;
// 省略getter和setter方法
}
- 数据访问对象类 WindowDao.java:
import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List;
public class WindowDao {
public List
try {
// 执行查询语句
String sql = "SELECT * FROM window WHERE windowId = ?";
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, windowId);
rs = pstmt.executeQuery();
// 处理查询结果
while (rs.next()) {
Window window = new Window();
window.setWindowId(rs.getInt("windowId"));
window.setWindowName(rs.getString("windowName"));
window.setCateringType(rs.getString("cateringType"));
window.setManagerPhoneNumber(rs.getString("managerPhoneNumber"));
windows.add(window);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 关闭数据库连接
DBUtil.closeResultSet(rs);
DBUtil.closeStatement(pstmt);
DBUtil.closeConnection(conn);
}
return windows;
}
}
- 数据访问对象类 AccountRecordDao.java:
import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.Date; import java.util.List;
public class AccountRecordDao {
public List
try {
// 执行查询语句
String sql = "SELECT ar.recordId, ar.recordDate, ar.amount, ar.windowId, w.windowName, w.cateringType " +
"FROM accountRecord ar " +
"JOIN window w ON ar.windowId = w.windowId " +
"WHERE ar.recordDate = ? " +
"AND ar.amount >= ? " +
"AND ar.amount <= ? " +
"AND ar.windowId = ?";
pstmt = conn.prepareStatement(sql);
pstmt.setDate(1, new java.sql.Date(date.getTime()));
pstmt.setDouble(2, minAmount);
pstmt.setDouble(3, maxAmount);
pstmt.setInt(4, windowId);
rs = pstmt.executeQuery();
// 处理查询结果
while (rs.next()) {
AccountRecord record = new AccountRecord();
record.setRecordId(rs.getInt("recordId"));
record.setRecordDate(rs.getDate("recordDate"));
record.setAmount(rs.getDouble("amount"));
record.setWindowId(rs.getInt("windowId"));
Window window = new Window();
window.setWindowName(rs.getString("windowName"));
window.setCateringType(rs.getString("cateringType"));
record.setWindow(window);
records.add(record);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 关闭数据库连接
DBUtil.closeResultSet(rs);
DBUtil.closeStatement(pstmt);
DBUtil.closeConnection(conn);
}
return records;
}
}
- 服务类 AccountRecordService.java:
import java.util.Date; import java.util.List;
public class AccountRecordService { private AccountRecordDao accountRecordDao;
public List<AccountRecord> getAccountRecordsByConditions(Date date, double minAmount, double maxAmount, int windowId) {
return accountRecordDao.getAccountRecordsByConditions(date, minAmount, maxAmount, windowId);
}
// 省略其他服务方法
}
注意:上述代码中的DBUtil类是一个数据库工具类,用于建立数据库连接和关闭连接,可以自行实现。
使用示例:
public static void main(String[] args) { AccountRecordService accountRecordService = new AccountRecordService();
// 设置查询条件
Date date = new Date(); // 日期为当前日期
double minAmount = 100; // 最小金额为100
double maxAmount = 1000; // 最大金额为1000
int windowId = 1; // 窗口编号为1
// 执行查询
List<AccountRecord> records = accountRecordService.getAccountRecordsByConditions(date, minAmount, maxAmount, windowId);
// 打印查询结果
for (AccountRecord record : records) {
System.out.println("记录编号:" + record.getRecordId());
System.out.println("入账时间:" + record.getRecordDate());
System.out.println("入账金额:" + record.getAmount());
System.out.println("窗口编号:" + record.getWindowId());
System.out.println("窗口名:" + record.getWindow().getWindowName());
System.out.println("餐饮类型:" + record.getWindow().getCateringType());
System.out.println("--------------------------");
}
原文地址: http://www.cveoy.top/t/topic/ioVp 著作权归作者所有。请勿转载和采集!