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 ...
随机推荐
- C# udpclient 发送数据断网后自动连接的方法
需求 有一个winform程序, 用来调试路由器和对路由器吞吐量进行测试 需要后台不断的接收来自udp服务器端的数据,同时要发送数据到服务器端(无线路由器) 设计时候,通过一个线程,for(;;)死循 ...
- [AngularJS] Best Practise - Controller
ControllerAs: Use thecontrollerAs syntax always as it aids in nested scoping and controller instance ...
- 使用Visual Studio创建简单的自己定义Web Part 部件属性
使用Visual Studio创建简单的自己定义Web Part 部件属性 自己定义属性使用额外的选项和设置拓展你的Web part部件.本文主要解说怎样使用Visual Studio创建简单的自己定 ...
- LINUX HOOK
http://blog.csdn.net/yyttiao/article/details/7346287
- PHP header 的几种用法
跳转页面 header('Location:'.$url); //Location和":"之间无空格. 声明content-type header('content-type:te ...
- jquery操作cookie {分享}
web开发过程中如果网站有一部分信息是存储在cookie中并与服务器交互的话,那么前台有时就会遇到需要对cookie中信息进行操作的情况,一个最典型的例子就是在前台判断用户是否登录过当前所访问的网站. ...
- EF——使用Data Annotations和Fluent API配置数据库的映射配置 02.01(转)
要更改EF中的默认配置有两个方法,一个是用Data Annotations(在命名空间System.ComponentModel.DataAnnotations;),直接作用于类的属性上面;还有一个就 ...
- 如何删除Weblogic域
1. delete entry in WL_HOME/common/nodemanager/nodemanager.domains 2. delete entry in FMW_HOME/domain ...
- Good subsequence( RMQ+二分)
Description Give you a sequence of n numbers, and a number k you should find the max length of Good ...
- C#实现DNS解析服务
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAnUAAAENCAIAAADmDAQyAAAat0lEQVR4nO3dbXRU9YHH8ftq2+1uT7