我也是刚刚写完这个模块,在网上找了好久都没找到细致的。写完测试成功后,就想写下来,跟别人分享下,帮助一些其他新人。下面请看代码。
写依赖的部分暂时没有,因为我也不知道具体是哪个,抱歉。
我的是根据字段名Name进行查询的
findByNameLike(String name)
findBy*Like 是jpa(应该是这么叫)自带的方法,*替换成要模糊查询的字段名
DAO模块
public interface StuDAO extends PagingAndSortingRepository<Stu, String>,JpaSpecificationExecutor<Stu>{
//模糊查询
List<Stu> findByNameLike(String name);
}
Service模块
public List<Stu> findNameLike(String name) {
//下面的name不需要用"%"+name+"%"
return stuDAO.findByNameLike(name);
}
Controller控制类
此处要注意写的参数不是likeName了。而是 “%”+likeName+"%"
//模糊查询
@RequestMapping("findNameLike")
@ResponseBody
//返回值什么的就没有太大的参考意义了,我是为了方便项目才这样写的
public List<Stu> findNameLike(HttpServletRequest req){
String likeName = req.getParameter("name");
List<Stu> list = new ArrayList<Stu>();
//这里需要用到模糊查询的通配符
list = stuService.findNameLike("%"+likeName+"%");
return list;
}
模糊查询基本代码跟普通的查询没有多大的区别,不同的地方就是使用的方法换成了findByNameLike()。
接着就是前端的显示部分了。
js代码
<script type="text/javascript">
$(function() {
$("input[name='name']").keyup(function(){//当选中的input失去焦点时调用改方法
var name = $("#name").val();
$.post("/stu/findNameLike",{name:name},function(data){
//alert(name);
//alert(JSON.stringify(data));
$("#in").html("");//下面的是用append进行添加,所以这里先将原来的清空以下
for(var i=0;i<data.length;i++){
$("#in").append("<li>"+data[i].name+"--"+data[i].sex+"</li>");
}
});
});
});
</script>
其中的alert()是测试的部分,这里就不删除了,方便大家测试。
JSON.stringify(data)这个方法好像是将json数据数据获取出来,如果是直接写data的话提示的是object。
跟js代码在一个页面的html代码
name: <input type="text" name="name" id="name"><span id="text"></span><br /><br />
<div class="box" >
<span id="in"></span>
</div>
<!-- css样式-->
<style type="text/css">
#{margin:0;auto:0}
.box{width:150px;height:auto;border: 2px solid red;}
li{list-style: none;margin-left: 10px;}
</style>
效果图
这个是数据库里面的数据
当输入"测"的时候,会出来以下四条数据
当你输入"测试2"的时候,红色框里面的数据就会随之刷新了