实现简单的前台输入框查询筛选出内容包含的数据:
使用ajax请求后台,后台拦截后再交给逻辑处理层(controller),再在dao层进行sql语句的查询并返回数据给逻辑层:
blog_search:function (req,resp) {
let search_value=req.query.search_value;//获取到前台(ajax)传过来的数据
console.log(search_value);//控制台打印出数据(查看是否获取到了)
fjfdao.blog_search(["%"+search_value+"%","%"+search_value+"%",
"%"+search_value+"%"]).then(
//给dao层返回三个参数,这里要查询3个条件(该参数就是你要在数据库查询的参数)
function (result) {
console.log(result);
resp.send(result);//将数据返回给页面
}
);
}
*注:比如 select * from student where s_name="张三"(”张三“就是参数)*
再转到dao层进行数据库的查询语句处理:
blog_search(params){
let p1=new Promise(function (resolve,reject) {
dbpool.connect("SELECT * FROM bloginformation WHERE blogTitle LIKE ? OR blogContent LIKE ? OR blogLable LIKE ?",
params,(err,data)=>{
if(!err){
resolve(data);//返回数据到处理层
}else{
reject(err);
}
})
});
return p1;
},
总结:将要模糊查询的”%“放到处理层作为参数(看成一个数据)一起传到dao层,从而dao层的sql语句就只用写一个”?“,就避免了在sql语句中插入很多的”%“,并能快速查询到数据。