首页 > 数据库 >分页查询数据库语句汇总

分页查询数据库语句汇总

时间:2022-10-31 11:13:39浏览次数:52  
标签:语句 记录 StringBuffer 查询数据库 汇总 userCondition paramList sql null

分页查询在后端开发中经常遇到,根据前台传到后端的数据,使用数据库语句找出对应记录数是一重点

分页查询:

1.前端传给后台的数据

1.页码:用户点击页码换页

2.页容量:每页显示多少行(可能是前台传过去,可能是后台给的默认值)

2.后台响应给前端的数据

1.总记录数:查询的总条数

2.总页数:根据总记录数与页容量求出来

总页数 = 总记录数%页容量==0?总记录数/页容量:总记录数/页容量+1

如果有余数,页容量加1

3.当前页记录,封装成page类

当前页显示的数据: sql: select * from... limit 序号,页容量

序号 = (页码 -1) * 页容量

 

1.查询总记录数

需要查询带条件的,不带条件的总记录数,带条件的总记录封装成一个实体类,userCondition;

不带条件的,可以调用这个方法,实体类为null

用StringBuffer来做拼接

//不带条件的总记录数,调用带条件的总记录数,传入实体类为null 
@Override public int count() { return count(null); }
//带条件的总记录数,传入需要带的条件,封装成实体类UserCondition
public int count(UserCondition userCondition) { //String 不可变字符串 //StringBuffer(线程安全) StringBuilder(线程不安全) StringBuffer sql = new StringBuffer(" SELECT COUNT(1) FROM tb_userinfo WHERE 1=1 "); List<Object> paramList = new ArrayList<>(); //拼接sql,封装成方法 appedSql(sql,userCondition,paramList); }
 //拼接条件
    private  void  appedSql(StringBuffer sql, UserCondition userCondition,List<Object> paramList){
        if(userCondition != null){
            if(userCondition.getName() != null && !userCondition.getName().isEmpty() ){
                sql.append("  AND name like ? ");
                paramList.add("%"+userCondition.getName()+"%");
            }
            if(userCondition.getAddress() != null && !userCondition.getAddress().isEmpty() ){
                sql.append(" AND  address = ? ");
                paramList.add(userCondition.getAddress());
            }
            if(userCondition.getEmail() != null && !userCondition.getEmail().isEmpty() ){
                sql.append(" AND  email like ? ");
                paramList.add("%"+userCondition.getEmail()+"%");
            }
            if(userCondition.getStartAge() != null  ){
                sql.append(" AND  age >= ? ");
                paramList.add(userCondition.getStartAge());
            }
            if(userCondition.getEndAge() != null  ){
                sql.append(" AND  age <= ? ");
                paramList.add(userCondition.getEndAge());
            }
        }
    }

2.根据选中的多个id删除记录

String[] uids = request.getParameterValues("uid");得到选中的多个id值
@Override
    public void delBatch(String[] uids) {
        StringBuffer sql = new StringBuffer("DELETE FROM tb_userinfo where 1 != 1 ");
        List<String> params = new ArrayList<>();
        for (int i = 0; i < uids.length; i++) {
            if(!uids[i].isEmpty()){
                sql.append(" or id = ?");
                params.add(uids[i]);
            }
        }
        JDBCUtil.executeUpdate(sql.toString(),params.toArray());
    }

3.查询当前页记录

当前页记录有带条件的,和不带条件的

//带条件的,传入带条件的实体类UserCondition,和当前页码,页容量(页码从前端拿到,页容量后台自定义)
@Override public List<Userinfo> selectByPage(int currentPageInt, int pageSizeInt, UserCondition userCondition) { StringBuffer sql =new StringBuffer("SELECT * FROM tb_userinfo WHERE 1=1 "); List<Object> paramList = new ArrayList<>(); appedSql(sql,userCondition,paramList); //拼接limit sql.append(" limit ? , ?"); paramList.add((currentPageInt-1)*pageSizeInt); paramList.add(pageSizeInt); List<Userinfo> userinfos = JDBCUtil.executeQuery(sql.toString(), Userinfo.class, paramList.toArray()); return userinfos; }

//不带条件的当前页记录,调用带条件的,传入的类为null  
@Override public List<Userinfo> selectByPage(int currentPageInt, int pageSizeInt) { return selectByPage(currentPageInt,pageSizeInt,null); }

 

标签:语句,记录,StringBuffer,查询数据库,汇总,userCondition,paramList,sql,null
From: https://www.cnblogs.com/pilpill/p/16843349.html

相关文章

  • 量纲化处理汇总
    在实际研究中,不同的变量单位不同,数值差异极大。例如100g和1m等。因此有时需要对数据进行去量纲,所谓的去量纲就是‘去掉’单位对数值的影响。但是量纲化有很多种方式,但具体......
  • 多选题分析汇总
    多选题是问卷分析中,经常使用的题型。多选题有很多优点,比如可以不限制选择次数,让受访者有更大的选择空间,但是研究者在分析多选题时,往往不知道如何下手,本篇文章带你来研究多......
  • SQL函数大全汇总
    SQL中包含以下七种类型的函数:一、聚合函数聚合函数:返回汇总值(它对其应用的每个行集返回一个值)AVG(表达式)返回表达式中所有的平均值。仅用于数字列并自动忽略NULL值。CO......
  • 索引接口汇总整理
    ##Neo4j###索引-Btreeindex-Rangeindex-Pointindex-Lookupindex-FullTextindex-Textindex其中Btree为当前默认索引,在neo4j的文档中rangeindex与pointin......
  • mysql中sql时间段查询语句
    #今天select*from表名whereto_days(时间字段名)=to_days(now());#昨天SELECT*FROM表名WHERETO_DAYS(NOW())–TO_DAYS(时间字段名)<=1#7天SELECT*FROM......
  • Vuex知识汇总
    vuex的五大核心state:存放公共数据/状态;getter:vuex独有的计算属性,获取state⾥⾯的状态,并且可以对数据进⾏处理之后在返回;mutations:修改state⾥⾯的数据,只能进⾏同步的操作......
  • shell编程之循环语句 for
    1什么是循环凡是重复执行一段代码,都可以称之为循环。循环体中三种专业的话术:遍历、迭代、递归。遍历(traversal)-按规则访问非线性结构中的每一项。迭代(itera......
  • shell编程之条件语句(条件测试、if语句、case语句)
    要使Shell脚本程序具备一定的“智能”,面临的第一个问题就是如何区分不同的情况以确定执行何种操作。Shell环境根据命令执行后的返回状态值($?)来判断是否执行成功,当返回值为0......
  • mySQL语句
    Mysql语句:1、插入sql  主键ID也需要填,mysql不会自动生成,--并且需要满足自增INSERTintotb_roomhclog(ID,RID,RoomID,RoomName,UCount,Raw_URL,Analyse_URL,Analys......
  • SQL模糊查询语句
    一般模糊语句如下:SELECT字段FROM表WHERE某字段Like条件其中关于条件,SQL提供了四种匹配模式:1、%:表示任意0个或多个字符。可匹配任意类型和长度的字符,有些情况下......