不定条件的多条件查询

后台部分:

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

      
      
          
    

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 list2=new ArrayList<>();
		List list=shd.findByAll(shi);
		for(int i=0;i

前端部分:

1.页面


2.页面代码

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;
    		}


你可能感兴趣的:(JdbcTemplate)