JAVA 模糊查询方法
当我们需要开发一个方法用来查询数据库的时候,往往会遇到这样一个问题:就是不知道用户到底会输入什么条件,那么怎么样处理sql语句才能让我们开发的方法不管接受到什么样的条件都可以正常工作呢?这时where '1'='1'加上list就可以完美解决这个问题了,废话少说,上代码:
// 模糊查询方法
public List<person> query() {
List<person> list = new ArrayList<>();
Connection con = null;
Scanner sc = new Scanner(System.in);
System.err.println("enter name:");
String name = sc.nextLine();
System.err.println("enter id:");
String id = sc.nextLine();
System.err.println("enter tel:");
String tel = sc.nextLine();
System.err.println("enter sex:");
String sex = sc.nextLine();
String sql = "select id,name,tel,sex from students "
// 技巧在此,合理拼接字符串
+ "where 1=1";
List<Object> list1 = new ArrayList<Object>();
//使用 commons-lang包
if (StringUtils.isNotEmpty(name)) {
sql += " and title like ?";
list1.add("%" + name + "%");
} if (!StringUtils.isEmpty(id)) {
sql += " and content like ?";
list1.add("%" + id + "%");
} if (!StringUtils.isEmpty(tel)) {
sql += " and addr like ?";
list1.add("%" + tel + "%");
}
try {
con = DSUtlis.getConnection();
// SQL语句组成完成以后,就生成pst对象
PreparedStatement pst = con.prepareStatement(sql);
// 设置?的值
for (int i = 0; i < list1.size(); i++) {
pst.setObject(i + 1, list.get(i));
}
ResultSet rs = pst.executeQuery();
while (rs.next()) {
person p = new person();
p.setId(rs.getString("id"));
p.setName(rs.getString("name"));
p.setTel(rs.getString("tel"));
p.setSex(rs.getString("sex").equals("1") ? "男" : "女");
list.add(p);
}
rs.close();
pst.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return list;
}
**注解:
1,以上代码操作一个Oracle数据库:
create table students(
id varchar(32),
name varchar(30),
tel varcher(15),
sex char(1),
constraint stud_pk primary key(id)
);
2,使用工具类获取Connection
3,proson是一个javabean
JAVA 模糊查询方法的更多相关文章
- 某表含有N个字段超精简模糊查询方法
我们在做多个字段模糊查询时,是不是觉得非常麻烦?比如我要模糊查询某表多个字段存在某数据时,如下 select * from table where a like '%key%' or b like ...
- Oracle 模糊查询方法
在这个信息量剧增的时代,怎样帮助用户从海量数据中检索到想要的数据.模糊查询是不可缺少的. 那么在Oracle中模糊查询是怎样实现的呢? 一.我们能够在where子句中使用likeke ...
- vue 如何实现 Input 输入框模糊查询方法
原理:原生js的indexOf() 方法,该方法将从头到尾地检索数组,看它是否含有对应的元素.开始检索的位置在数组 start 处或数组的开头(没有指定 start 参数时).如果找到一个 item, ...
- 关于mongodb按照字段模糊查询方法
模糊查询:tname包含某个关键字测试' cd /opt/soft/mongodb/bin ./mongo --host 192.168.0.1 --port 17017 test db.test ...
- 【摘录】某表含有N个字段超精简模糊查询方法
SELECT * FROM table where CONCAT(a,b,c......) like '%key%' select name from syscolumns where id=obj ...
- LinqToEntity模糊查询的方法选择
LinqToEntity针对oracle模糊查询 方法:Contains() 转换出来的sql是 like 关键字 方法:IndexOf() 转换出来的sql是 instr() 函数 lik ...
- mybatis模糊查询防止SQL注入
SQL注入,大家都不陌生,是一种常见的攻击方式.攻击者在界面的表单信息或URL上输入一些奇怪的SQL片段(例如“or ‘1’=’1’”这样的语句),有可能入侵参数检验不足的应用程序.所以,在我们的应用 ...
- js实现模糊查询
1.简述 实现模糊查询方法有很多种,后端可以实现,前端使用js也可以实现. 后端实现起来需要根据输入框中搜索的关键字,去后台拼接SQL语句查询. 前端直接使用字符串的indexOf()方法或者正则表达 ...
- input动态模糊查询的实现方式
最近在用jQuery实现动态模糊查询的时候,找了挺久都没有找到像Vue.js的watch属性这么好用的动态模糊查询方法.就分享一下目前遇到的坑和可以实现动态查询的几种方式. 1.jQuery的chan ...
随机推荐
- JQuery动画插件Velocity.js发布:更快的动画切换速度
5月3日,Julian在其GitHub上发布了Velocity.js.Velocity.js是一款动画切换的jQuery插件,它重新实现了jQuery的$.animate()方法从而加快动画切换的速度 ...
- Understanding Linux Kernel version 3 读书笔记
P30, preemptive kernel .kernel threading 和Multithreaded application support没太好理解,我想如果设计个多线程的程序来运行运行 ...
- iOS开发——数据持久化OC篇&plist文件增删改查操作
Plist文件增删查改 主要操作: 1.//获得plist路径 -(NSString*)getPlistPath: 2.//判断沙盒中名为plistname的文件是否存在 -(BOOL ...
- iOS开发——多线程OC篇&多线程详解
多线程详解 前面介绍了多线程的各种方式及其使用,这里补一点关于多线程的概念及相关技巧与使用,相信前面不懂的地方看了这里之后你就对多线程基本上没有什么问题了! 1——首先ios开发多线程中必须了解的概念 ...
- WebService究竟是什么?
一.序言 大家或多或少都听过WebService(Web服务),有一段时间非常多计算机期刊.书籍和站点都大肆的提及和宣传WebService技术,当中不乏非常多吹嘘和做广告的成分.可是不得不承认的是W ...
- 终端I/O之非规范模式
关闭termios结构中c_lflag字段的ICANON标志就使终端处于非规范模式.在非规范模式中,输入数据并不组成行,不处理下列特殊字符:ERASE/KILL/EOF/NL/EOL/EOL2/CR/ ...
- Java元组Tuple使用实例--转载
原文地址:http://50vip.com/35.html 一.为什么使用元组tuple? 元组和列表list一样,都可能用于数据存储,包含多个数据:但是和列表不同的是:列表只能存储相同的数据类型,而 ...
- LeetCode46,47 Permutations, Permutations II
题目: LeetCode46 I Given a collection of distinct numbers, return all possible permutations. (Medium) ...
- 在Archlinux ARM - Raspberry Pi上安装Google coder
升级软件包 一个 pacman 命令就可以升级整个系统.花费的时间取决于系统有多老.这个命令会同步非本地(local)软件仓库并升级系统的软件包: # pacman -Syu 提示:确保make以及g ...
- [xUI] ligerUI开发框架简介和搭建
ligerUI开发者:谢略,网名daomi API: http://api.ligerui.com/ 演示地址: http://demo.ligerui.com/ 源码下载: ht ...