JAVA后端根据两个条件查询获得List,给前端分页展示,且两个条件均可能为空的处理

自己想的办法,比较麻烦。。

DAO中:

根据两个条件的四种情况(均不空、前空、后空、均空),写四组查List以及获取满足条件记录数的方法

//    根据页数和每页展示数查
    @Select("select * from damage_assess_result where warhead_id=#{warheadId} and target_id=#{targetId} limit #{start} , #{end}")
    public List<DamageAssessResult> findByWarheadAndTarget(String warheadId, String targetId, int start, int end);

    //    查询到的条数
    @Select("select count(*) from damage_assess_result where warhead_id=#{warheadId} and target_id=#{targetId}")
    public int countFindByWarheadAndTarget(String warheadId, String targetId);

    //    根据页数和每页展示数查
    @Select("select * from damage_assess_result where warhead_id=#{warheadId} limit #{start} , #{end}")
    public List<DamageAssessResult> findByWarhead(String warheadId, int start, int end);

    //    查询到的条数
    @Select("select count(*) from damage_assess_result where warhead_id=#{warheadId}")
    public int countFindByWarhead(String warheadId);

    //    根据页数和每页展示数查
    @Select("select * from damage_assess_result where target_id=#{targetId} limit #{start} , #{end}")
    public List<DamageAssessResult> findByTarget(String targetId, int start, int end);

    //    查询到的条数
    @Select("select count(*) from damage_assess_result where target_id=#{targetId}")
    public int countFindByTarget(String targetId);

    //    根据页数和每页展示数查
    @Select("select * from damage_assess_result limit #{start} , #{end}")
    public List<DamageAssessResult> find(int start, int end);

    //    查询到的条数
    @Select("select count(*) from damage_assess_result")
    public int countFind();

Service的impl中:

根据俩条件的四种情况,分别调用不同的方法。

@Override
    public JSONObject findByWarheadAndTarget(String warheadId, String targetId, int start, int end) {
        List<DamageAssessResult> list=new ArrayList<>();
        int total = 0;
        if (warheadId!=null&&targetId!=null){
            total = damageAssessResultDao.countFindByWarheadAndTarget(warheadId,targetId);
            list = damageAssessResultDao.findByWarheadAndTarget(warheadId,targetId,start,end);
        }
        else if (warheadId==null&&targetId!=null) {
            total = damageAssessResultDao.countFindByTarget(targetId);
            list = damageAssessResultDao.findByTarget(targetId, start, end);
        }
        else if (warheadId!=null&&targetId==null) {
            total = damageAssessResultDao.countFindByWarhead(warheadId);
            list = damageAssessResultDao.findByWarhead(warheadId, start, end);
        }
        else {
            total = damageAssessResultDao.countFind();
            list = damageAssessResultDao.find(start, end);
        }

		List<JSONObject> jsonList = new ArrayList<>();
		jsonObject.put("list",jsonList);
        jsonObject.put("total",total);
        return jsonObject;
    }
		List<DamageAssessResult> list=new ArrayList<>();
        int total = 0;
        if (warheadId!=null&&targetId!=null){
            total = damageAssessResultDao.countFindByWarheadAndTarget(warheadId,targetId);
            list = damageAssessResultDao.findByWarheadAndTarget(warheadId,targetId,start,end);
        }
        else if (warheadId==null&&targetId!=null) {
            total = damageAssessResultDao.countFindByTarget(targetId);
            list = damageAssessResultDao.findByTarget(targetId, start, end);
        }
        else if (warheadId!=null&&targetId==null) {
            total = damageAssessResultDao.countFindByWarhead(warheadId);
            list = damageAssessResultDao.findByWarhead(warheadId, start, end);
        }
        else {
            total = damageAssessResultDao.countFind();
            list = damageAssessResultDao.find(start, end);
        }

		List<JSONObject> jsonList = new ArrayList<>();
		jsonObject.put("list",jsonList);
        jsonObject.put("total",total);
        return jsonObject;

Controller中:

	@ApiOperation("根据战斗部id和目标id分页获取计算结果列表")
    @GetMapping("resultList")
    @ResponseBody
    public CommonResult<JSONObject> resultList(@RequestParam(value = "warheadId",required = false) String warheadId,
                                               @RequestParam(value = "targetId",required = false) String targetId,
                                               @RequestParam(value = "pageSize", defaultValue = "6") Integer pageSize,
                                               @RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum) {
        int start = (pageNum - 1) * pageSize;
        int end = pageSize;
        JSONObject jsonObject = new JSONObject();
        jsonObject=damageAssessResultService.findByWarheadAndTarget(warheadId,targetId,start,end);
        return CommonResult.success(jsonObject);
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java后端中,大数据分页处理通常采用以下步骤: 1. 从数据库中查询出所有符合条件的数据。 2. 根据分页请求参数,计算出需要返回的数据的起始位置和数量。 3. 使用Java集合类(如List)对查询结果进行分页处理,只返回需要的部分数据。 4. 将分页处理后的数据返回给前端。 以下是一个示例代码,用于实现基于JDBC和MySQL数据库的大数据分页处理: ```java public List<User> getUsers(int pageNumber, int pageSize) throws SQLException { // 计算需要查询的数据的起始位置和数量 int startIndex = (pageNumber - 1) * pageSize; int endIndex = pageNumber * pageSize; // 建立数据库连接 Connection conn = DriverManager.getConnection(DB_URL, DB_USERNAME, DB_PASSWORD); // 执行SQL查询语句 PreparedStatement stmt = conn.prepareStatement("SELECT * FROM users"); ResultSet rs = stmt.executeQuery(); // 从查询结果中读取数据,并进行分页处理 List<User> userList = new ArrayList<>(); int count = 0; while (rs.next()) { if (count >= startIndex && count < endIndex) { User user = new User(); user.setId(rs.getInt("id")); user.setName(rs.getString("name")); user.setAge(rs.getInt("age")); userList.add(user); } count++; } // 关闭数据库连接 rs.close(); stmt.close(); conn.close(); return userList; } ``` 在以上示例代码中,pageNumber和pageSize参数分别表示要查询的页码和每页返回的数据数量。首先,根据这两个参数计算出需要查询的数据的起始位置和数量。然后,建立数据库连接,执行SQL查询语句,并从查询结果中读取数据。最后,根据计算出的起始位置和数量,对查询结果进行分页处理,只返回需要的部分数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值