Spring boot sql语句多条件查询参数为空后可以忽略本条件的语句

Spring boot sql语句多条件查询参数为空后可以忽略本条件的语句

	@Query(value="SELECT * FROM student s INNER JOIN clas c ON s.cid=c.id where if(:id!=0,id=:id,1=1)  and sname LIKE CONCAT('%',:sname,'%') ORDER BY sorts DESC",nativeQuery=true)
	Page<List<Map>> findAllP(Pageable page,String sname,Integer id);
	
	@Query(value="SELECT * FROM student s INNER JOIN clas c ON s.cid=c.id where CASE WHEN :id=0  THEN 1=1  ELSE id=:id END and sname LIKE CONCAT('%',:sname,'%') ORDER BY sorts DESC",nativeQuery=true)
	Page<List<Map>> findAllP(Pageable page,String sname,Integer id);

在进行多条件查询的时候经常会遇到查询参数为空的问题,如果遇到这样的问题有以上两种解决方法,适用于表连接,分页后进行条件判断,可以根据自己的需要进行变更

原理

		如果传入的参数为空,就显示1=1,而1=1是真,所以不会对语句造成影响
发布了34 篇原创文章 · 获赞 5 · 访问量 2264

猜你喜欢

转载自blog.csdn.net/tanfei_/article/details/103144791
今日推荐