wzhuwzhu 2018-11-27 00:26 采纳率: 0%
浏览 1191

Springboot+Mybatis接收react前端POST请求查询不到结果

后台可以收到请求的json数据,用相同的数据单独测试后台也可以搜到结果。但是直接从react前端发送请求,搜索结果就为空。
单独测试后台StaffManagementController,main方法中创建staffAO对象department=chemistry, 可以搜索到staffVOList.size=6个结果。从react前端表单department输入chemistry,发送POST请求,搜索到结果却是staffVOList.size=0个结果. esclipse后台console也显示staffAO.department=chemistry,说明前端请求可以正确接收。但是不知道为什么搜索不到结果。问题应该出在后台,但是完全想不出还哪里能出问题。。
下面是controller,function,mapper代码。希望有高手指教,非常感谢!

 @RestController
@RequestMapping("/api")
public class StaffManagementController {
    private StaffManagementFunction function;

    @PostMapping("staffs/find")
    List<StaffManagementViewObject> getStaffByKeys(@Valid @RequestBody StaffManagementArgumentObject staffAO) throws Exception {
        log.info("Request to search for staff: {}", staffAO);
        List<StaffManagementViewObject> staffs = function.findStaffByKeys(staffAO);
        if (staffs == null) {
            new ResponseEntity<>(HttpStatus.NOT_FOUND);
            }
        return staffs;
 @Service
public class StaffManagementFunctionImpl implements StaffManagementFunction{
 @Override
    public  List<StaffManagementViewObject> findStaffByKeys(StaffManagementArgumentObject staffManagementArgumentObject) throws Exception {
        SqlSession session = MyBatisUtil.getSession();
        StaffManagementMapper smMapper = session.getMapper(StaffManagementMapper.class);

        if(staffManagementArgumentObject==null){
            throw new IllegalArgumentException("argumentObject cannot be blank");
        }
        String genderInput = staffManagementArgumentObject.getGender();
        String gender= (genderInput==null)?null:(genderInput=="male")?"true":"false";

        staffManagementArgumentObject.setGender(gender);

        List<StaffManagement> staffList = smMapper.selectKeysLike(staffManagementArgumentObject);
        MyBatisUtil.closeSession();

        List<StaffManagementViewObject> staffVOList = new ArrayList<StaffManagementViewObject> ();
        for(int i = 0 ; i < staffList.size() ; i++)  {
            StaffManagement staff = staffList.get(i);
            String genderVO = AssertThrowUtil.parseGenderToString(staff.getGender());
            String yearOfGraduationVO = AssertThrowUtil.parseYearToString(staff.getYear

            StaffManagementViewObject staffVO = new StaffManagementViewObject();
            staffVO.setId(staff.getId());
            staffVO.setName(staff.getName());
            staffVO.setGender(genderVO);
            staffVO.setDepartment(staff.getDepartment());
            staffVO.setYearOfGraduation(yearOfGraduation);
            staffVOList.add(staffVO);
        }
        return staffVOList;
    }
    StaffManagementMapper.xml 
        <select id="selectKeysLike" parameterType="com.springboot.demo.controller.StaffManagementArgumentObject" resultMap="BaseResultMap"> 
    select * from staff_management where 
            Name like '%${name}%'
            AND Gender like '%${gender}%' 
            AND Department like '%${department}%' 
            AND Position like '%${position}%' 
                AND Year_of_graduation like '%${yearOfGraduation}%'
  </select>
  • 写回答

1条回答 默认 最新

  • wzhuwzhu 2018-11-27 03:11
    关注

    原来是有问题react前端数据用body: JSON.stringify(staff)获取时id值变为字符串“null”,需要在后台设置变量Long id = null; 再setId将staffAO作为搜索参数

    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!