当我们需要开发一个方法用来查询数据库的时候,往往会遇到这样一个问题:就是不知道用户到底会输入什么条件,那么怎么样处理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 模糊查询方法的更多相关文章

  1. 某表含有N个字段超精简模糊查询方法

    我们在做多个字段模糊查询时,是不是觉得非常麻烦?比如我要模糊查询某表多个字段存在某数据时,如下 select * from table where a like '%key%' or b  like ...

  2. Oracle 模糊查询方法

           在这个信息量剧增的时代,怎样帮助用户从海量数据中检索到想要的数据.模糊查询是不可缺少的. 那么在Oracle中模糊查询是怎样实现的呢?   一.我们能够在where子句中使用likeke ...

  3. vue 如何实现 Input 输入框模糊查询方法

    原理:原生js的indexOf() 方法,该方法将从头到尾地检索数组,看它是否含有对应的元素.开始检索的位置在数组 start 处或数组的开头(没有指定 start 参数时).如果找到一个 item, ...

  4. 关于mongodb按照字段模糊查询方法

    模糊查询:tname包含某个关键字测试' cd /opt/soft/mongodb/bin ./mongo --host 192.168.0.1  --port 17017  test db.test ...

  5. 【摘录】某表含有N个字段超精简模糊查询方法

    SELECT * FROM  table where CONCAT(a,b,c......) like '%key%' select name from syscolumns where id=obj ...

  6. LinqToEntity模糊查询的方法选择

    LinqToEntity针对oracle模糊查询 方法:Contains() 转换出来的sql是  like  关键字 方法:IndexOf()  转换出来的sql是  instr()  函数 lik ...

  7. mybatis模糊查询防止SQL注入

    SQL注入,大家都不陌生,是一种常见的攻击方式.攻击者在界面的表单信息或URL上输入一些奇怪的SQL片段(例如“or ‘1’=’1’”这样的语句),有可能入侵参数检验不足的应用程序.所以,在我们的应用 ...

  8. js实现模糊查询

    1.简述 实现模糊查询方法有很多种,后端可以实现,前端使用js也可以实现. 后端实现起来需要根据输入框中搜索的关键字,去后台拼接SQL语句查询. 前端直接使用字符串的indexOf()方法或者正则表达 ...

  9. input动态模糊查询的实现方式

    最近在用jQuery实现动态模糊查询的时候,找了挺久都没有找到像Vue.js的watch属性这么好用的动态模糊查询方法.就分享一下目前遇到的坑和可以实现动态查询的几种方式. 1.jQuery的chan ...

随机推荐

  1. CodeForces 176B Word Cut dp

    Word Cut 题目连接: http://codeforces.com/problemset/problem/176/C Description Let's consider one interes ...

  2. 因为改 UOM conversion 导致库存数量和財务上的数据错误

    轻易改变 UOM conversion 会导致库存数量混乱, 也会造成財务上的数据错误. 我们这里做一个 case 来详细分析一下. 1. 開始 Carton 和 Each 的比例是 1 : 1. 2 ...

  3. 【OC语法快览】四、基础内存管理

    Basic Memory Management                                                           基础内存管理 If you're w ...

  4. HANDLER命令与实现

    MySQL“自古以来”都有一个神秘的HANDLER命令,而此命令非SQL标准语法,可以降低优化器对于SQL语句的解析与优化开销,从而提升查询性能.看到这里,可能有小伙伴不淡定了,这么好的东西为啥没广泛 ...

  5. QT核心编程之调试技术 (g)

    Qt应用程序的调试可以通过DDD进行跟踪调试和打印各种调试或警告信息.DDD(Data Display Debugger)是使用gdb调试工具的图形工具,它安装在Linux操作系统中,使用方法可参考D ...

  6. Spring MVC @RequestMapping Annotation Example with Controller, Methods, Headers, Params, @RequestParam, @PathVariable--转载

    原文地址: @RequestMapping is one of the most widely used Spring MVC annotation.org.springframework.web.b ...

  7. linux modprobe命令参数及用法详解--linux加载模块命令

    转:http://www.linuxso.com/command/modprobe.html modprobe(module probe) 功能说明:自动处理可载入模块. 语 法:modprobe [ ...

  8. 【阿里云产品公测】OTS使用之简单线上产品实践基于PythonSDK

    阿里云用户:morenocjm 实践是检验真理的唯一标准,学习技术需要通过实践过程中的不断尝试,才能够快速掌握要领.OTS是构建在阿里云飞天分布式系统之上的NoSQL数据库服务,提供海量结构化数据的存 ...

  9. 【Android 界面效果17】Android手机平板两不误,使用Fragment实现兼容手机和平板的程序

    记得我之前参与开发过一个华为的项目,要求程序可以支持好几种终端设备,其中就包括Android手机和Android Pad.然后为了节省人力,公司无节操地让Android手机和Android Pad都由 ...

  10. setcookie 之 我见

    $default_currency=get_default_currency(); $_COOKIE['currency'] = $default_currency['currency']; $_CO ...