不确定条件的查询

以下是通过串字符串的方式实现查询:

  @Test
    public void query1() throws Exception{
        QueryRunner run = new QueryRunner(DataSourceUtils.getDatasSource());
       Contact c = new Contact();
       //c.setId("C001");
       c.setName("王");
       //c.setSex("1");
       //c.setTel("123");
       //c.setAddr("中国");
       //c.setAge(88);
       String sql = "select * from contacts where 1=1";
       if(c.getId()!=null){
           sql+=" and id=‘"+c.getId()+"‘";
       }
       if(c.getSex()!=null){
           sql = sql+" and sex=‘"+c.getSex()+"‘";
       }
       if(c.getName()!=null){
           sql+=" and name like ‘%"+c.getName()+"%‘";
       }
       if(c.getAddr()!=null){
           sql+=" and addr like ‘%"+c.getAddr()+"%‘";
       }
       if(c.getTel()!=null){
           sql+=" and tel like ‘%"+c.getTel()+"%‘";
       }
       System.err.println(">>>>>>:"+sql);
      
       List<Contact> cs = run.query(sql,new BeanListHandler<Contact>(Contact.class));
       for(Contact cc:cs){
           System.err.println(cc);
       }
    }
//不确定条件的查询
    @Test
    public void query1() throws Exception{
       QueryRunner run = new QueryRunner(DataSourceUtils.getDatasSource());
       Contact c = new Contact();
       //c.setId("C001");
       c.setName("王‘");
       c.setSex("1");
       c.setTel("123");
       c.setAddr("中国");
       c.setAge(55);
       String sql = "select * from contacts where 1=1 ";//匹配后面的所有and
       List<Object> params = new ArrayList<Object>();
       if(c.getId()!=null){
           sql+=" and id=?";
           params.add(c.getId());
       }
       if(c.getSex()!=null){
           sql = sql+" and sex=?";
           params.add(c.getSex());
       }
       if(c.getName()!=null){
           sql+=" and name like ?";
           params.add("%"+c.getName()+"%");
       }
       if(c.getAddr()!=null){
           sql+=" and addr like ?";
           params.add("%"+c.getAddr()+"%");
       }
       if(c.getTel()!=null){
           sql+=" and tel like ?";
           params.add("%"+c.getTel()+"%");
       }
       if(c.getAge()!=null){
           sql+=" and age=?";
           params.add(c.getAge());
       }
       System.err.println(">>>>>>:"+sql);
       System.err.println(params);
       List<Contact> cs = run.query(sql,
                    new BeanListHandler<Contact>(Contact.class),
                    params.toArray());
       for(Contact cc:cs){
           System.err.println(cc);
       }
      
      
    }
时间: 2024-10-18 02:59:43

不确定条件的查询的相关文章

bos 第4 (区域excel批量导入、区域通用分页查询、分区的添加、分区多条件分页查询、分区导出excel)

BOS项目笔记 第4天 今天内容安排: 1.区域批量导入功能 jQuery OCUpload(一键上传插件).apache POI.pinyin4j 2.实现区域的分页查询 3.对分页代码重构 4.添加分区(combobox下拉框) 5.分区的组合条件分页查询 6.分区数据导出功能 1. 区域数据批量导入功能 1.1 一键上传插件使用 ajax不能做文件上传. 第一步:在jsp页面中引入插件的js文件 <script type="text/javascript" src=&quo

使用ArcGIS API for Silverlight 进行复合多条件空间查询

原文:使用ArcGIS API for Silverlight 进行复合多条件空间查询 这两天帮网上认识的一个兄弟做了一个查询的示例,多多少少总结一下,在此和大家分享. 为什么说是复合多条件呢?因为进行空间查询有时候我们查询的条件会很复杂,比如要求某一要素的某一属性大于多少,且小于多少,且又不等于多少等等.而在官网给出的例子中并没有关于复合查询的说明.不过查看API后,你会发现一句很重要的话: A where clause for the query. Any legal SQL where c

thinkphp-where-数组条件-普通查询

语法 Db::table(表名)->where(条件)->select(); 示例 $map['name'] = 'thinkphp'; $map['status'] = 1; // 把查询条件传入查询方法 Db::table('think_user')->where($map)->select(); 对应原始sql SELECT * FROM think_user WHERE `name`='thinkphp' AND status=1

指定查询条件,查询对应的集合List(单表)

TestDao.java(测试类) @Test public void findCollectionByConditionNoPage(){  ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml");  IElecTextService elecTextService = (IElecTextService) ac.getBean(IElecTextService.SERVICE_NAME);   

HBase多条件筛选查询方案

最近的项目需要使用Hbase做实时查询,由于Hbase只支持一级索引,也就是使用rowkey作为索引查询,所以对于多条件筛选查询的支持不够,在不建立二级索引的情况下,只能使用Hbase API中提供的各种filter过滤器进行筛选,感觉查询效率不太理想,于是考虑建立二级索引的方案. 经过google学习网上前辈们的经验,暂时找到两种可用的方案: 使用Hbase协处理器Coprocessor在写入数据时,创建二级索引表,并将每条数据的索引写入二级索引表中,查询时先根据筛选条件查询二级索引表,获取相

Entity Framework多表多条件动态查询

方式一  Linq To Entity形式: /// <summary> /// 查询的数据 /// </summary> /// <param name="order">升序asc(默认)还是降序desc</param> /// <param name="sort">排序字段</param> /// <param name="search">查询条件</p

复合条件连接查询

复合条件连接查询是在连接查询的过程中,通过添加过滤条件,限制查询的结果,使查询的结果更加准确 mysql> SELECT customers.c_id, orders.o_num FROM customers INNER JOIN orders ON customers.c_id = orders.c_id AND customers.c_id = 10001; +-------+-------+ | c_id | o_num | # 在连接查询时指定查询客户ID为10001的订单信息,添加了过

zTree初体验--MVC linq动态多条件OR查询

工作需要,使用zTree实现了一个点击显示下拉复选框列表选中项作为查询条件的功能.简单记录下菜鸟级开发历程. zTree:是一个依靠jQuery实现的多功能树控件.通过简单引用配置就可使用. 具体使用: (1).脚本.样式引用 注意:引用顺序,zTree.js一定放最后. <link rel="stylesheet" href="@Url.Content("~/Scripts/jquery.plugins/zTree/zTreeStyle.css")

ADO多条件模糊查询防字符串攻击

多条件组合查询使用字符串拼接TSQL语句来实现 1 void Button1_Click(object sender, EventArgs e) 2 { 3 string text = "select *from car"; //最终TSQL语句 4 string endtext = ""; //组合查询末尾部分 5 int num = 0; //记录当前是第几条查询,为了区别前缀是Where还是and 6 bool ok = false; //判断是否有填写查询

通过条件的查询----涉及到三层(Action Service DAO)

通过条件的查询 select from Employee  e where  1=1 and e.name like ‘%李%’ and e.name like '%王%' order by e.name desc;