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是真,所以不会对语句造成影响