当前位置: 首页 > news >正文

PreparedStatement,根据条件查询总数

PreparedStatement,条件查询总数

package com.javakc.test2;

import com.javakc.db.Utils;
import com.javakc.vo.Condition;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class testQueryCount {
    public static long selectCount(Condition condition) throws SQLException {
        Connection connection = null;
        long count = 0;
        try {
            //获取连接
            connection = Utils.getConnection();
            //拼接带条件的sql语句
            String sql = "select count(*)c from card where 1=1 ";
            //封装带有查询条件的List
            List<Object> paramList = new ArrayList<>();

            //拼接条件
            //判断用户是否输入条件
            if (condition != null) {
                //判断用户是否需要查询姓名
                if (condition.getName() != null && condition.getName().trim().length() > 0) {
                    //姓名,模糊查询
                    sql += "and name like ?";
                    paramList.add("%" + condition.getName() + "%");
                }
                //判断用户是否需要查询性别
                if (condition.getSex() != null && condition.getSex().trim().length() > 0) {
                    //性别,精确查询
                    sql += "and sex =?";
                    paramList.add(condition.getSex());
                }
                //判断用户是否需要查询积分
                if (condition.getCredit1() != null) {
                    //积分,区间查询
                    sql += "and credit>=? ";
                    paramList.add(condition.getCredit1());
                }
                if (condition.getCredit2() != null) {
                    sql += "and credit <=?";
                    paramList.add(condition.getCredit2());
                }
                System.out.println(sql);
                System.out.println(paramList);
            }
            //创建能处理预编译的sql语句的对象PreparedStatement
            PreparedStatement preparedStatement = connection.prepareStatement(sql);
            //替换占位符
            for (int i = 0; i < paramList.size(); i++) {
                preparedStatement.setObject(i + 1, paramList.get(i));
            }
            //执行sql语句
            ResultSet resultSet = preparedStatement.executeQuery();
            //处理数据库返回的结果
            if (resultSet.next()) {
                count = resultSet.getLong("c");
            }
            preparedStatement.close();
            resultSet.close();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } finally {
            if (connection != null) {
                //关闭连接
                connection.close();
            }
        }
        return count;
    }

    public static void main(String[] args) throws SQLException {
        Condition c = new Condition();
        c.setName("a");
        c.setSex("男");
        c.setCredit1(1);
        c.setCredit2(5);
        long l = selectCount(c);
        System.out.println(l);
    }
}

相关文章:

  • 第十八天计算机视觉之语义分割
  • Multiprocessing package - torch.multiprocessing
  • 【Linux操作系统】--多线程(二)--条件变量
  • Apache Iceberg理解和应用
  • 算法系列九:十大经典排序算法之——堆排序
  • lodash笔记(集合篇)
  • 云原生之Kubernetes:17.详解Apiserver和RBAC
  • 反欺诈模型常用开发工具
  • 【校招VIP】[产品][一本][7分]进一步描述用户的痛点和画像
  • StarRocks入门之路
  • /run/containerd/containerd.sock connect: connection refused
  • 中枢神经系统解剖结构图,神经系统的解剖结构
  • 商城系统功能需求分析_免费搭建方式介绍_OctShop
  • 33.友元
  • 【C++】类和对象(四)“这三种”成员变量只能放在初始化列表中初始化,你都知道吗?
  • [deviceone开发]-do_Webview的基本示例
  • 【React系列】如何构建React应用程序
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • JWT究竟是什么呢?
  • Less 日常用法
  • log4j2输出到kafka
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • Zepto.js源码学习之二
  • 前嗅ForeSpider中数据浏览界面介绍
  • 浅谈web中前端模板引擎的使用
  • 让你成为前端,后端或全栈开发程序员的进阶指南,一门学到老的技术
  • 微信小程序开发问题汇总
  • 责任链模式的两种实现
  • 7行Python代码的人脸识别
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (1)STL算法之遍历容器
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (ibm)Java 语言的 XPath API
  • (定时器/计数器)中断系统(详解与使用)
  • (二)c52学习之旅-简单了解单片机
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (未解决)jmeter报错之“请在微信客户端打开链接”
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (一)kafka实战——kafka源码编译启动
  • (终章)[图像识别]13.OpenCV案例 自定义训练集分类器物体检测
  • (转)http协议
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • ******之网络***——物理***
  • ***微信公众号支付+微信H5支付+微信扫码支付+小程序支付+APP微信支付解决方案总结...
  • ... 是什么 ?... 有什么用处?
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .bat批处理(三):变量声明、设置、拼接、截取
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET 材料检测系统崩溃分析
  • .NET/C# 推荐一个我设计的缓存类型(适合缓存反射等耗性能的操作,附用法)
  • .NET分布式缓存Memcached从入门到实战
  • .NET国产化改造探索(三)、银河麒麟安装.NET 8环境
  • .NET中统一的存储过程调用方法(收藏)