动态的带参数的分页查询

该博客主要展示了如何根据传入的参数动态构建SQL查询语句,实现分页查询功能。通过检查Map参数中的real_name、type和username,动态拼接SQL条件,最后结合分页参数完成查询并返回User对象列表。
摘要由CSDN通过智能技术生成
//动态的带参数的分页查询 m是页数 page  n是limit
public List<User> selectAllByParam(Map map){
    System.out.println("map dao= " + map);
    for (Object o : map.keySet()) {
        System.out.println("o = " + o);
    }
    String page =(String) map.get("page");//接收前端参数放入到map中
    String limit =(String) map.get("limit");

    String real_name =(String) map.get("real_name");
    String type =(String) map.get("type");
    String username =(String) map.get("username");
    //如果real_name不为空   (动态sql 1个sql 实现多个查询)
    //sql=select * from t_user where real_name like %张% limit ?,?

    //如果real_name不为空  type不为空
    //sql=select * from t_user where real_name like %张% and type=1  limit ?,?

    //如果real_name不为空  type不为空  username不为空
    //sql=select * from t_user where real_name like %张% and type=1  and username like %李%  limit ?,?


    List<User> lists = new ArrayList<>();
    //1、步骤1、创建链接对象
    Connection connection = DBHelper.getConnection();
    //2、创建sql语句
    /*String sql="select * from t_user where +" +
            "             " +
            "  " +
            " +  limit ?,? ";*/
    String sql="select * from t_user where 1=1";//因为是多余的
    if(null!=real_name &&real_name.length()>0){
        sql=sql +" and real_name like  '%"+real_name+"%'  ";
    }

    if(null!=type &&type.length()>0){
        sql=sql +" and type  ="+type+" ";
    }

    if(null!=username &&username.length()>0){
        sql=sql +" and username like  '%"+username+"%'  ";
    }
    sql = sql + " limit  ? , ? ";
    System.out.println("dao de sql = " + sql);
    PreparedStatement ps=null;
    ResultSet rs=null;
    PageBeanUtil pageBeanUtil = new PageBeanUtil(Integer.parseInt(page),Integer.parseInt(limit));
    try {
        //3、使用链接对象获取预编译对象
        ps= connection.prepareStatement(sql);
        ps.setInt(1,pageBeanUtil.getStart());
        ps.setInt(2,Integer.parseInt(limit));
        //4、执行预编译对象,得出结果集
        rs= ps.executeQuery();
        //5、遍历结果集,一一的取对象
        while (rs.next()){
            User user = new User();
            user.setId(rs.getInt("id"));
            user.setCreate_time(rs.getString("create_time"));
            user.setImg(rs.getString("img"));
            user.setIs_del(rs.getInt("is_del"));
            user.setModify_time(rs.getString("modify_time"));
            user.setPassword(rs.getString("password"));
            user.setReal_name(rs.getString("real_name"));
            user.setType(rs.getInt("type"));
            user.setUsername(rs.getString("username"));
            lists.add(user);
        }
    } catch (SQLException e) {
        e.printStackTrace();
    }finally {
        try {
            connection.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    return lists;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值