不定条件的多条件查询

后台部分:

1.  首先,在applicationContext.xml中进行配置:   

    <!-- spring jdbc -->  
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">  
        <property name="dataSource" ref="dataSource" />  
    </bean>

2.然后在DAO层添加引用(在使用@Autowird  后不能new Dao层   会造成注释失败)

        @Autowired
	private JdbcTemplate jdbcTemplate;

	public JdbcTemplate getJdbcTemplate(){
		return jdbcTemplate;
	}
	
	public void setJdbcTemplate(JdbcTemplate jdbcTemplate){
		this.jdbcTemplate = jdbcTemplate;
	}

3.接着我们写一个判断输入内容是否为空的方法

        private boolean isNotBlank(String str){
		return str!=null && !str.trim().equals("");
	}

4.重点 拼接我们所需要的SQL语句

//多条件查询
	public List findByAll(SHI shi){
		List params = new ArrayList();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		String sql = "SELECT * FROM chaxun WHERE 1=1 ";
		
		if(this.isNotBlank(shi.getId())){
			sql += " AND name = ? ";
			params.add(shi.getId().trim());
		}
		if(this.isNotBlank(shi.getName())){
			sql += " AND name LIKE ? ";
			params.add("%"+shi.getName().trim()+"%");    //加%是为了模糊查询
		}
		if(this.isNotBlank(shi.getFounder())){
			sql += " AND FOUNDER LIKE ? ";
			params.add("%"+shi.getFounder().trim()+"%");
		}
		if(this.isNotBlank(shi.getStr())){
			sql += " AND str LIKE ? ";
			params.add("%"+shi.getStr().trim()+"%");
		}
		if(this.isNotBlank(shi.getStatus())){
			sql += " AND status LIKE ? ";
			params.add("%"+shi.getStatus().trim()+"%");
		}
		if(shi.getCreateTime()!=null){			 //判读时间是否为空 
			String createtime=sdf.format(shi.getCreateTime());
			if(this.isNotBlank(sdf.format(shi.getCreateTime()))){
				sql += "AND createTime LIKE ?  ";
				params.add("%"+createtime.trim()+"%");
			}
			 /*在某段时间之前  
            if(this.isNotBlank(shi.getName())){  
    			sql += " AND name <=? ";  
    			params.add(shi.getName().trim()+"23:59:59");  
        	}  
            */
		}
		sql += " ORDER BY ID DESC ";		 //拼装我们所需要的sql语句  
		
		System.out.println(params);			 // 输出数组内容  
//		System.out.println("jdbcTemplate:"+jdbcTemplate);	//测试jdbcTemplate是否生效
	
		List list = this.getJdbcTemplate().queryForList(sql,params.toArray());		/为sql注入值

		System.out.println(sql);		//输出sql语句检查是否正确 
		System.out.println("test02:"+list.size());		//输出list看是否有返回值  
		return list;
	}

5.为了方便向前台传递数据,我选择在service层将Dao层的list

@Override
	public List findByAll(SHI shi) {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		List<SHI> list2=new ArrayList<>();
		List list=shd.findByAll(shi);
		for(int i=0;i<list.size();i++){
			SHI shi1=new SHI();
			Map map=(Map)list.get(i);                     //list传递是数据类型为lsitMap,在这里我们要把它们遍历出来,重新装配
			shi1.setId((Integer)map.get("id"));
			shi1.setName((String)map.get("name"));
			shi1.setStr((String)map.get("str"));
			shi1.setStatus((String)map.get("status"));
			shi1.setDescribe((String)map.get("describe"));
			shi1.setNum((Integer)map.get("num"));
			Date createTime=(Date)map.get("createTime");
			shi1.setCreateTime(createTime);
			Date completeTime=(Date)map.get("completeTime");
			shi1.setCompleteTime(completeTime);
			
			list2.add(shi1);
			System.out.println("加一次");
		}
		
		return list2;
	}

前端部分:

1.页面

2.页面代码

<div class="formWarp">
        <div class="teamWarp1">
            <div class="InputWarp topGap">
                <label>任务名称:</label>
                <input type="text" class="txt" id="workname" />
            </div>
            <div class="InputWarp topGap">
                <label>创建时间:</label>
                <input type="text" class="txt txt80" id="createTime"/>
            </div>
            <div class="InputWarp topGap">
                <label>创建人:</label>
                <input type="text" class="txt txt80" id="founder"/>
            </div>
            <div class="InputWarp topGap">
                <label>省份:</label>
                <select class="sel txt80" id="pro">
                    <option>北京</option>
                    <option>天津</option>
                    <option>上海</option>
                    <option>重庆</option>
                    <option>河北</option>
                    <option>河南</option>
                    <option>云南</option>
                    <option>辽宁</option>
                    <option>黑龙江</option>
                    <option>湖南</option>
                    <option>安徽</option>
                    <option>山东</option>
                    <option>新疆</option>
                    <option>江苏</option>
                    <option>浙江</option>
                    <option>江西</option>
                    <option>湖北</option>
                    <option>广西</option>
                    <option>甘肃</option>
                    <option>山西</option>
                    <option>内蒙</option>
                    <option>陕西</option>
                    <option>吉林</option>
                    <option>福建</option>
                    <option>贵州</option>
                    <option>广东</option>
                    <option>青海</option>
                    <option>西藏</option>
                    <option>四川</option>
                    <option>宁夏</option>
                    <option>海南</option>
                </select>
            </div>
            <div class="InputWarp topGap">
                <label>任务状态:</label>
                <select class="sel txt80" id="status">
                    <option>全部</option>
                    <option>新建</option>
                    <option>下发</option>
                </select>
            </div>
            <div class="l topGap">
                <input type="button" class="btn btnBlue query" value="查询" />
            </div>
        </div>
    </div>

3.JS代码

$(".query").on("click",function(){
		var workname=$("#workname").val();
		var createTime=$("#createTime").val();
		var founder=$("#founder").val();
		var pro=$("#pro").val();
		var status=$("#status").val();
		var data = {
				"name":workname,
				"createTime":createTime,
				"founder":founder,
				"str":pro,
				"status":status
		}
		var str=JSON.stringify(data);
    	var json=JSON.parse(str);
    	$.ajax({
    		type:"post",
    		url:"findByAll",
    		dataType : "json",
    		contentType:'application/json;charset=utf-8',
    		async:false,
    		data:JSON.stringify(json),
    		success:function(data){ 
    			var a=data;
    		}

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值