5、【25分】编写jdbc相关代码model dao service完成关于记录的多条件查询:要求:根据 日期年月日、金额范围小值-大值、窗口编号查询入账记录;编写main测试类输入查询条件打印查询结果打印内容包括:记录编号 入账时间 入账金额 窗口编号 窗口名 餐饮类型是名字不是数字
以下是jdbc相关代码的示例:
- 创建Record类(model):
public class Record {
private int id;
private Date date;
private double amount;
private int windowId;
private String windowName;
private String cateringType;
// 构造方法、getter和setter省略
}
- 创建RecordDao类(dao):
import java.sql.*;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class RecordDao {
private Connection getConnection() throws SQLException {
String url = "jdbc:mysql://localhost:3306/db_name";
String username = "username";
String password = "password";
return DriverManager.getConnection(url, username, password);
}
public List<Record> getRecordsByConditions(Date date, double minAmount, double maxAmount, int windowId) {
List<Record> records = new ArrayList<>();
try (Connection connection = getConnection();
PreparedStatement statement = connection.prepareStatement("SELECT * FROM record WHERE date = ? AND amount BETWEEN ? AND ? AND window_id = ?")) {
statement.setDate(1, new java.sql.Date(date.getTime()));
statement.setDouble(2, minAmount);
statement.setDouble(3, maxAmount);
statement.setInt(4, windowId);
ResultSet resultSet = statement.executeQuery();
while (resultSet.next()) {
Record record = new Record();
record.setId(resultSet.getInt("id"));
record.setDate(resultSet.getDate("date"));
record.setAmount(resultSet.getDouble("amount"));
record.setWindowId(resultSet.getInt("window_id"));
record.setWindowName(resultSet.getString("window_name"));
record.setCateringType(resultSet.getString("catering_type"));
records.add(record);
}
} catch (SQLException e) {
e.printStackTrace();
}
return records;
}
}
- 创建RecordService类(service):
import java.util.Date;
import java.util.List;
public class RecordService {
private RecordDao recordDao;
public RecordService() {
this.recordDao = new RecordDao();
}
public List<Record> getRecordsByConditions(Date date, double minAmount, double maxAmount, int windowId) {
return recordDao.getRecordsByConditions(date, minAmount, maxAmount, windowId);
}
}
- 创建Main类(测试类):
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
public class Main {
public static void main(String[] args) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
RecordService recordService = new RecordService();
try {
Date date = dateFormat.parse("2022-01-01");
double minAmount = 100.0;
double maxAmount = 500.0;
int windowId = 1;
List<Record> records = recordService.getRecordsByConditions(date, minAmount, maxAmount, windowId);
for (Record record : records) {
System.out.println("记录编号:" + record.getId());
System.out.println("入账时间:" + record.getDate());
System.out.println("入账金额:" + record.getAmount());
System.out.println("窗口编号:" + record.getWindowId());
System.out.println("窗口名:" + record.getWindowName());
System.out.println("餐饮类型:" + record.getCateringType());
System.out.println();
}
} catch (ParseException e) {
e.printStackTrace();
}
}
}
注意事项:
- 需要将"db_name"替换为实际的数据库名,"username"和"password"替换为连接数据库所需的用户名和密码。
- 需要导入相应的JDBC驱动包,如MySQL Connector/J
原文地址: https://www.cveoy.top/t/topic/ioTz 著作权归作者所有。请勿转载和采集!