QueryWrapper<Appointment> queryWrapper = new QueryWrapper<>();多条件查询
时间: 2024-01-07 10:22:38 浏览: 31
```java
QueryWrapper<Appointment> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("status", 1) // 状态为1
.like("name", "张三") // 名字包含"张三"
.between("age", 18, 30); // 年龄在18到30之间
List<Appointment> appointments = appointmentMapper.selectList(queryWrapper);
```
以上代码演示了使用`QueryWrapper`进行多条件查询的示例。在示例中,我们创建了一个`QueryWrapper`对象,并使用`eq`、`like`和`between`方法来添加多个查询条件。最后,我们使用`selectList`方法执行查询并将结果存储在`appointments`列表中。
相关问题
@ApiOperation(value = "分页", notes = "") @RequestMapping(value = "/page", method = RequestMethod.GET) public String page(@RequestParam(value = "page", defaultValue = "1") int pageNumber, @RequestParam(value = "page.size", defaultValue = Constant.PAGE_SIZE) int pageSize, @RequestParam(value = "sortType", defaultValue = "auto") String sortType, HttpServletRequest request, Model model) { HttpSession session = request.getSession(); User user = (User) session.getAttribute("user"); if (user == null) { return "login"; } //为我们 封装了 动态 查询语句 search_这个 开头 search_EQ_xxxx(字段名称) 就是查询 相等 //search_Like_xxxx 模糊 //EQ, LIKE, GT, LT, GTE, LTE, NOTEQ, ISNULL, ISNOTNULL, ORLIKE, IN, NOTIN Map<String, Object> searchParams = Servlets.getParametersStartingWith(request, "search_"); Page<Appointment> page = appointmentService.getPage(searchParams,pageNumber, pageSize, sortType); model.addAttribute("list", page); return "appointment/list"; }
这段代码是一个分页的接口方法,使用了Spring MVC框架。具体的功能是根据传入的参数进行分页查询,并返回一个包含查询结果的页面。
接口的URL路径为"/page",请求方法为GET。接口的参数包括:
- pageNumber:当前页码,默认值为1
- pageSize:每页显示的条数,默认值为常量Constant.PAGE_SIZE
- sortType:排序类型,默认值为"auto"
- request:HttpServletRequest对象,用于获取请求参数
- model:Spring MVC框架中的Model对象,用于向页面传递数据
接口的实现逻辑如下:
1. 首先,从请求中获取当前用户信息,如果用户为空,则返回"login"字符串,表示需要跳转到登录页面。
2. 接着,使用Servlets工具类从请求中获取以"search_"开头的动态查询参数,并将其封装为一个Map对象。
3. 调用appointmentService的getPage方法,传入查询参数、当前页码、每页显示条数和排序类型,获取分页结果。
4. 将查询结果添加到Model对象中,属性名为"list"。
5. 返回"appointment/list"字符串,表示需要跳转到名为"appointment/list"的页面。
这段代码的作用是实现分页查询,并将查询结果传递给页面进行展示。
class RoomManager { private: // Conference Room 1, the smaller one. // Only require the date information for appointment. set<int> _room1; // Conference Room 2, the bigger one. // Require both date and event information for appointment. map<int, string> _room2; public: // Insert an appointment to the smaller Conference Room (1). bool InsertAppointment(const int& date); // Insert an appointment to the bigger Conference Room (2). bool InsertAppointment(const int& date, const string& event); // Cancel an appointment on designated date. // If room_id == 1, cancel the corresponding appointment of _room1. // If room_id == 2, cancel the corresponding appointment of _room2. bool CancelAppointment(const int& room_id, const int& date); // Print all existing appointments in chronological order. // If room_id == 1, just print the date information. Each piece of information is separated by ' '. // If room_id == 2, print the information in form of "date(event)". Each piece of information is separated by ' '. // If there is no even one existing appointment yet, print "No Appointment". void PrintAppointments(const int& room_id) const; };写完这个代码
,我们可以使用 RoomManager 类来管理两个会议室的预约信息。其中,Conference Room 1 只需要日期信息即可进行预约,而 Conference Room 2 需要日期和事件信息才能进行预约。
下面是完整的 RoomManager 类的代码实现:
```c++
#include <iostream>
#include <set>
#include <map>
using namespace std;
class RoomManager {
private:
// Conference Room 1, the smaller one.
// Only require the date information for appointment.
set<int> _room1;
// Conference Room 2, the bigger one.
// Require both date and event information for appointment.
map<int, string> _room2;
public:
// Insert an appointment to the smaller Conference Room (1).
bool InsertAppointment(const int& date) {
if (_room1.find(date) != _room1.end()) {
// There is already an appointment on this date.
return false;
} else {
_room1.insert(date);
return true;
}
}
// Insert an appointment to the bigger Conference Room (2).
bool InsertAppointment(const int& date, const string& event) {
if (_room2.find(date) != _room2.end()) {
// There is already an appointment on this date.
return false;
} else {
_room2[date] = event;
return true;
}
}
// Cancel an appointment on designated date.
// If room_id == 1, cancel the corresponding appointment of _room1.
// If room_id == 2, cancel the corresponding appointment of _room2.
bool CancelAppointment(const int& room_id, const int& date) {
if (room_id == 1) {
if (_room1.find(date) != _room1.end()) {
_room1.erase(date);
return true;
} else {
// There is no appointment on this date.
return false;
}
} else if (room_id == 2) {
if (_room2.find(date) != _room2.end()) {
_room2.erase(date);
return true;
} else {
// There is no appointment on this date.
return false;
}
} else {
// Invalid room_id.
return false;
}
}
// Print all existing appointments in chronological order.
// If room_id == 1, just print the date information. Each piece of information is separated by ' '.
// If room_id == 2, print the information in form of "date(event)". Each piece of information is separated by ' '.
// If there is no even one existing appointment yet, print "No Appointment".
void PrintAppointments(const int& room_id) const {
if (room_id == 1) {
if (_room1.empty()) {
cout << "No Appointment";
} else {
for (const auto& date : _room1) {
cout << date << " ";
}
}
} else if (room_id == 2) {
if (_room2.empty()) {
cout << "No Appointment";
} else {
for (const auto& appointment : _room2) {
cout << appointment.first << "(" << appointment.second << ") ";
}
}
} else {
// Invalid room_id.
cout << "Invalid room_id";
}
cout << endl;
}
};
int main() {
RoomManager rm;
rm.InsertAppointment(20220101);
rm.InsertAppointment(20220102, "Meeting with John");
rm.InsertAppointment(20220103);
rm.InsertAppointment(20220102, "Meeting with Peter");
rm.PrintAppointments(1);
rm.PrintAppointments(2);
rm.CancelAppointment(1, 20220103);
rm.CancelAppointment(2, 20220102);
rm.PrintAppointments(1);
rm.PrintAppointments(2);
return 0;
}
```
这里的 main 函数演示了 RoomManager 类的使用方法。我们可以看到,通过 RoomManager 类,我们可以方便地进行会议室预约、取消预约和打印预约信息等操作。