public List<VoluntaryFillingDAO> findVoluntaries(String username) { QueryWrapper<VoluntaryFilling> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("username", username).orderByAsc("serial_number"); List<VoluntaryFilling> voluntaryFillings = voluntaryFillingMapper.selectList(queryWrapper); List<VoluntaryFillingDAO> voluntaryFillingDAOS = new ArrayList<>(); int lastSerialNumber = 1; for (VoluntaryFilling v : voluntaryFillings) { if (lastSerialNumber == v.getSerialNumber()) { VoluntaryFillingDAO voluntaryFillingDAO = new VoluntaryFillingDAO(); BeanUtils.copyProperties(v, voluntaryFillingDAO); voluntaryFillingDAOS.add(voluntaryFillingDAO); lastSerialNumber++; } ProfessionalDAO professionalDAO = new ProfessionalDAO(); BeanUtils.copyProperties(v,professionalDAO); voluntaryFillingDAOS.get(lastSerialNumber - 2).getProfessional().add(professionalDAO); } return voluntaryFillingDAOS; }解释代码
时间: 2024-04-26 13:23:00 浏览: 60
这是一个 Java 方法,用于查询某个用户(username)填报的志愿信息。具体解释如下:
1. 使用 MyBatis-Plus 框架提供的 QueryWrapper 创建一个查询条件,要求查询结果中 username 字段等于传入的参数 username,并按照 serial_number 字段升序排序。
2. 调用 MyBatis-Plus 提供的 selectList 方法,执行查询并返回一个包含多个 VoluntaryFilling 对象的列表。
3. 创建一个空的 VoluntaryFillingDAO 对象列表,并初始化 lastSerialNumber 为 1。
4. 遍历查询结果中的每一个 VoluntaryFilling 对象,检查其 serial_number 字段是否等于 lastSerialNumber:
- 若相等,创建一个 VoluntaryFillingDAO 对象,并使用 Spring 提供的 BeanUtils 工具类将 VoluntaryFilling 对象的属性拷贝到新创建的 VoluntaryFillingDAO 对象中。然后将该 VoluntaryFillingDAO 对象添加到 voluntaryFillingDAOS 列表中,并将 lastSerialNumber 加 1。
- 若不相等,说明该 VoluntaryFilling 对象属于上一个 serial_number 所对应的志愿,因此创建一个 ProfessionalDAO 对象,并将 VoluntaryFilling 对象的属性拷贝到 ProfessionalDAO 对象中。然后将 ProfessionalDAO 对象添加到上一个 VoluntaryFillingDAO 对象的 professional 列表中。
5. 返回填充好的 VoluntaryFillingDAO 对象列表。
阅读全文