这里只讲@Query里多条件 存在空情况的判断(如果项目有跨数据情况,不建议使用下面方法)
首先对于Mysql数据库可以参考一下:
@Query(value = "select t.* from T t where if (?1 is null,1=1,t.id = ?1) ", nativeQuery = true)
Page<T> findAllDictionary(Pageable pageable, int id);
上面一招网上有很多的案例,我也是参考的,但是在我的项目中一直报错,好像是什么 无效的字符,后来试了半天发现oracle不支持这种写法,于是又开始研究,最终花了一上午研究出下面这一招,
这个是适用于oracle数据库的:
@Query(value = "select t.* from T t where t.id= (case when ?1 is null then t.id else ?1 end) ", nativeQuery = true)
Page<T> findAllDictionary(Pageable pageable, int id);
当然,数据库还有很多,我也懒得去研究了,基本上都是按这个套路来,只不过一些数据库不支持某些函数而已,然后换一种函数就能解决!总之JPA还是很方便的,简洁开发,效率高!