后台部分:
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;
}