QueryRunner使用之可变条件的处理
在三层架构的Dao层中,需要通过不确定的条件,从数据库查询结果。
可以利用List集合作为容器将条件存储起来。
实际开发中的代码:
public List<Hotel> searchByFloorAndTypeAndFree(String cmbHouseFloor,String cmbHouseType, String cheFree) throws SQLException {
QueryRunner runner = new QueryRunner(DataSourceUtils.getDataSource());
//定义一个容器存储实际参数
List<String> list = new ArrayList<String>();
String sql = "select * from tb_hotel where 1 = 1";
//如果用户选择了楼层
int cmbHouseFloorInt = Integer.parseInt(cmbHouseFloor);
if(cmbHouseFloorInt > 0){
sql += " and houseId like ?";//模糊查询
list.add(cmbHouseFloor + "%");
}
//如果用户选择了房型
if(!cmbHouseType.equals("不限")){
sql += " and houseType = ?";
list.add(cmbHouseType);
}
//如果用户勾选了空闲复选框
if(cheFree != null){
sql += " and houseState = ?";
list.add("%" + 0);
}
List<Hotel> hotelList = runner.query(sql, new BeanListHandler<Hotel>(Hotel.class), list.toArray());
return hotelList;
}
注意:根据runner.query的参数,可变参数需要String类型,所以需要将list转化为String即list.toArray()。
QueryRunner使用之可变条件的处理的更多相关文章
- Python学习笔记 for windows
学习来源 http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001374738136 ...
- Q查询
一.Complex lookups with Q objects(Q对象的复杂查询) 仅仅靠单一的关键字参数查询已经很难满足查询要求.此时Django为我们提供了Q查询: class Q 1.Q对象( ...
- frequentism-and-bayesianism-chs
frequentism-and-bayesianism-chs 频率主义和贝叶斯主义——一个实用的介绍 此notebook最初出现在博客Pythonic Perambulations的文章.BSD l ...
- python基础1.0
1. python简介:解释性语言 安装python,注意路径加入path python的解释器,cpython,Python的解释器很多,但使用最广泛的还是CPython.如果要和Java或.Net ...
- java并发实践笔记
底层的并发功能与并发语义不存在一一对应的关系.同步和条件等底层机制在实现应用层协议与策略须始终保持一致.(需要设计级别策略.----底层机制与设计级策略不一致问题). 简介 1.并发简史.(资源利用率 ...
- Android图片加载框架最全解析(二),从源码的角度理解Glide的执行流程
在本系列的上一篇文章中,我们学习了Glide的基本用法,体验了这个图片加载框架的强大功能,以及它非常简便的API.还没有看过上一篇文章的朋友,建议先去阅读 Android图片加载框架最全解析(一),G ...
- java中关于volatile的理解疑问?
作者:xyzZ链接:https://www.zhihu.com/question/49656589/answer/117826278来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请 ...
- C++函数模板详解(一):概念和特性
函数模板是指这样的一类函数:可以用多种不同数据类型的参数进行调用,代表了一个函数家族.它的外表和普通的函数很相似,唯一的区别就是:函数中的有些元素是未确定的,这些元素将在使用的时候才被实例化.先来看一 ...
- 企业需要使用网络损伤仪 WANsim 的帮助,以便更高效地迁移到云端
正确解决与云环境中的应用程序部署有关的问题需要针对每个系统的独特需求以寻找特定的网络工具.网络损伤仪 WANsim 助力企业更高效地迁移到云端! 起初,云厂商以在云端办公相对于传统方式拥有更高的可靠性 ...
随机推荐
- ARM debian的图形界面安装
这里图形界面的安装比较简单,启动系统后,登录到root账户,首先要执行更新源的命令:apt-get update 然后直接执行下面的动作: 直接安装LXDE即可: 指令: apt-get insta ...
- npm ERR! Refusing to install package with name "webpack" under a package -----
当我们在安装以一些依赖的时候会提示以下报错--------- 问题出在: 这个name 不能使用所需要安装包的名字! 解决方案----- 修改下就行 -- -我将wenpack 改成webpack1 ...
- 【PHP篇】运算及流程控制
算数运算: 1.运算符罗列: 算数运算符:[+].[-].[*].[/].[%].[++].[--] 赋值运算符:[=].[+=].[-=].[*=].[/=].[%=].[.=] 比较运算符:[&g ...
- Python入门必学,用Python练习画个美队盾牌
0 环境 Python版本:3.6.6 操作系统:Mac OS Mojave 10.14.2 1 引言 最近我媳妇每天晚上吃饭时候也拿手机看,上厕所也在看. 看着看着还会笑?WTF?你在干嘛呢? 没错 ...
- [源码]Python简易http服务器(内网渗透大文件传输含下载命令)
Python简易http服务器源码 import SimpleHTTPServerimport SocketServerimport sysPORT = 80if len(sys.argv) != 2 ...
- 解决关于 在android studio 出现的 DELETE_FAILED_INTERNAL_ERROR Error while Installing APK 问题
在ionic2开发中,用android studio 打包apk的时候出现DELETE_FAILED_INTERNAL_ERROR Error while Installing APK. 我的andr ...
- Flex(ActionScript)与JavaScript交互的两种方式示例
随着各单位部门信息化进程的不断发展,互通互联.共享协调不断的被越来越多的客户所重视.很多新项目都要去必须能够集成已有的早期系统,至少也要能够实现交互对接.今天跟大家分享的是系统对接中ActionScr ...
- Android UI(三)SlidingMenu实现滑动菜单(详细 官方)
Jeff Lee blog: http://www.cnblogs.com/Alandre/ (泥沙砖瓦浆木匠),retain the url when reproduced ! Thanks ...
- Oracle SQL 开发误区探索
本文内容摘自<剑破冰山--Oracle开发艺术>一书. 1.避免对列运算 要善于通过等价改写消除 SQL 中对列的运算,这样可以避免索引无法使用. 2.消除隐式转换 3.关注空格(避免粗心 ...
- kubernetes的安装
获取源码 最新安装包下载地址,GitHub下载地址 本次实验的1.10.0的二进制包下载,百度网盘 机器环境 Kubernetes Roles IP地址 Hostname Master 192.168 ...