服务端:
1.创建SqlMapper.class
package com.symapgis.lycp.mapper;
import com.symapgis.lycp.entity.*;
public class SqlMapper {
/**
* 变更表多条件模糊查询
*
* @param chan 传入的对象
* @param strat 分页从第几页开始
* @param size 分页,每页多少条
* @return
*/
public String selectByChangeIF(Change chan, int strat, int size) {
StringBuffer sql = new StringBuffer("select * from changetable where 1=1 ");
if (chan.getChanApplication() != null && !("".equals(chan.getChanApplication()))) {
//LIKE '%******%'
sql.append(" AND chan_application LIKE '%" + chan.getChanApplication() + "%'");
}
if (chan.getChanAffiliate() != null && !("".equals(chan.getChanAffiliate()))) {
sql.append(" AND chan_affiliate LIKE '%" + chan.getChanAffiliate() + "%'");
}
if (chan.getChanWeizhichange() != null && !("".equals(chan.getChanWeizhichange()))) {
sql.append(" AND chan_weizhichange='" + chan.getChanWeizhichange() + "'");
}
if (chan.getChanCqsm() != null && !("".equals(chan.getChanCqsm()))) {
sql.append(" AND chan_cqsm='" + chan.getChanCqsm() + "'");
}
//日期格式, 以具体到某一天为例 LIKE '2019-08-13%'
if (chan.getChanApplicationTime() != null && !("".equals(chan.getChanApplicationTime()))) {
sql.append(" AND chan_application_time LIKE '" + chan.getChanApplicationTime() + "%'");
}
if (chan.getChanYsResult() != null && !("".equals(chan.getChanYsResult()))) {
sql.append(" AND chan_ys_result='" + chan.getChanYsResult() + "'");
}
//分页语句
sql.append(" ORDER BY chan_application_time DESC LIMIT " + strat + "," + size);
return sql.toString();
}
/**
* 变更表配合模糊查询返回数量
*
* @param chan
* @return
*/
public String selectByChangeIFCount(Change chan) {
StringBuffer sql = new StringBuffer("SELECT COUNT(*) from (SELECT * from changetable where 1=1 ");
if (chan.getChanApplication() != null && !("".equals(chan.getChanApplication()))) {
sql.append(" AND chan_application LIKE '%" + chan.getChanApplication() + "%'");
}
if (chan.getChanAffiliate() != null && !("".equals(chan.getChanAffiliate()))) {
sql.append(" AND chan_affiliate LIKE '%" + chan.getChanAffiliate() + "%'");
}
if (chan.getChanWeizhichange() != null && !("".equals(chan.getChanWeizhichange()))) {
sql.append(" AND chan_weizhichange='" + chan.getChanWeizhichange() + "'");
}
if (chan.getChanCqsm() != null && !("".equals(chan.getChanCqsm()))) {
sql.append(" AND chan_cqsm='" + chan.getChanCqsm() + "'");
}
if (chan.getChanApplicationTime() != null && !("".equals(chan.getChanApplicationTime()))) {
sql.append(" AND chan_application_time LIKE '" + chan.getChanApplicationTime() + "%'");
}
if (chan.getChanYsResult() != null && !("".equals(chan.getChanYsResult()))) {
sql.append(" AND chan_ys_result='" + chan.getChanYsResult() + "'");
}
sql.append(" ORDER BY chan_application_time DESC ) as a");
return sql.toString();
}
}
拼接后为:
//分页模糊查询语句
select * from changetable where 1=1 AND chan_application LIKE '%2019%' AND chan_affiliate LIKE '%19%' AND chan_weizhichange='是' AND chan_cqsm='买断' AND chan_application_time LIKE '2019-08-06%' AND chan_ys_result='1' ORDER BY chan_application_time DESC LIMIT 0,10
//返回模糊查询数量语句
SELECT COUNT(*) from (SELECT * from changetable where 1=1 AND chan_application LIKE '%2019%' AND chan_affiliate LIKE '%19%' AND chan_weizhichange='是' AND chan_cqsm='买断' AND chan_application_time LIKE '2019-08-06%' AND chan_ys_result='1' ORDER BY chan_application_time DESC ) as a
2.Mapper层
创建接口
@Mapper
public interface ChangeMapper {
/**
* 多条件模糊查询
* @param chan
* @param start
* @param size
* @return
* 注意 type 为创建的类名 method 为方法名
*/
@SelectProvider(type=SqlMapper.class,method="selectByChangeIF")
List selectByChangeIF(Change chan,@Param("strat") int start, @Param("size") int size);
/**
* 多条件模糊查询,返回数量
* @param chan
* @param start
* @param size
* @return
*/
@SelectProvider(type=SqlMapper.class,method="selectByChangeIFCount")
int selectByChangeIFCount(Change chan);
}
3.Controller层
import net.sf.json.JSONObject;
import java.util.HashMap;
import java.util.Map;
@RestController
@RequestMapping("/Change")
public class ChangeController {
@Autowired
private ChangeService chanser;
@ResponseBody
@RequestMapping("/selectByChangeIf/{chanObj}")
public Object selectByIF(@PathVariable("chanObj") String chanObj) {
Map map = new HashMap<>();
//接收前端发送来的JSON,转换为对象
JSONObject jsonobj = JSONObject.fromObject(chanObj);
Change chan = new Change();
chan.setChanApplication((String) jsonobj.get("chanApplication"));
chan.setChanAffiliate((String) jsonobj.get("chanAffiliate"));
chan.setChanWeizhichange((String) jsonobj.get("chanWeizhichange"));
chan.setChanCqsm((String) jsonobj.get("chanCqsm"));
chan.setChanApplicationTime((String) jsonobj.get("chanApplicationTime"));
chan.setChanYsResult((String) jsonobj.get("chanYsResult"));
int start = (int) jsonobj.get("start");
int size = (int) jsonobj.get("size");
map.put("ChangePageList", chanser.selectByChangeIF(chan, start, size));
map.put("ChangePageListCount", chanser.selectByChangeIFCount(chan, start, size));
return map;
}
}
前端发送的JSON:
{chanApplication: "2019", chanAffiliate: "19", chanWeizhichange: "是", chanCqsm: "买断", chanApplicationTime: "2019-08-06", …}
chanAffiliate: "19"
chanApplication: "2019"
chanApplicationTime: "2019-08-06"
chanCqsm: "买断"
chanWeizhichange: "是"
chanYsResult: "1"
size: 10
start: 0
注意引用的JSON
import net.sf.json.JSONObject;
//在pom.xml引入jar包
net.sf.json-lib
json-lib
2.2.3
jdk15
前端:
利用JQuery发送请求
$('#submit').click(function() {
//获取form表单中的内容
var d = {};
var t = $('form').serializeArray();
$.each(t, function() {
d[this.name] = this.value;
});
var chanObj = d;
chanObj.start = 0;
chanObj.size = 10;
console.log(chanObj);
$.ajax({
url: "/Change/selectByChangeIf/" + JSON.stringify(chanObj),
type: "post",
contentType: "application/json",
dataType: "json",
data: {moveObj: JSON.stringify(chanObj)},
success: function (res) {
console.log(res);
}
})
})
2.form表单