springBoot使用findBy*(字段名)*Like(参数)进行模糊查询

我也是刚刚写完这个模块,在网上找了好久都没找到细致的。写完测试成功后,就想写下来,跟别人分享下,帮助一些其他新人。下面请看代码。
写依赖的部分暂时没有,因为我也不知道具体是哪个,抱歉。
我的是根据字段名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"的时候,红色框里面的数据就会随之刷新了在这里插入图片描述

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用 Spring Data JPA 中的 Query By Example(QBE)实现模糊查询。QBE 是一种基于实体类的动态查询方式,可以根据实体类的属性值来构建查询条件。具体实现步骤如下: 1. 创建一个实体类,该实体类中包含需要查询的属性。 2. 创建一个 Example 对象,将需要查询的属性值设置到该对象中。 3. 创建一个 ExampleMatcher 对象,设置匹配规则,如忽略大小写、模糊查询等。 4. 调用 JpaRepository 中的 findAll 方法,将 Example 对象和 ExampleMatcher 对象作为参数传入即可。 下面是一个示例代码: ```java // 实体类 @Entity @Table(name = "user") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; private Integer age; // getter 和 setter 略 } // DAO 接口 public interface UserRepository extends JpaRepository<User, Long> { } // Service 类 @Service public class UserService { @Autowired private UserRepository userRepository; public List<User> findUsers(String name) { User user = new User(); user.setName(name); ExampleMatcher matcher = ExampleMatcher.matching() .withMatcher("name", match -> match.contains().ignoreCase()); Example<User> example = Example.of(user, matcher); return userRepository.findAll(example); } } ``` 以上代码实现了根据用户名进行模糊查询的功能。其中,ExampleMatcher 中的 withMatcher 方法用于设置匹配规则,"name" 表示要匹配的属性名,match.contains() 表示使用模糊查询,ignoreCase() 表示忽略大小写。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值