业务需要多表关联查询并且模糊搜索,使用mybatis可用动态sql,jpa就没那么简单了,看了大量的文章,终于找到一种可行的办法
写个简单的例子
public interface UserProjection {
//@Value("#{target.userName}")//当别名与该getXXX名称不一致时,可以使用该注解调整
String getUserName();
String getRoleName();
}
@Query(value="SELECT u.userName AS userName,r.roleName AS roleName FROM SysUser u,SysRole r WHERE u.roleId=r.roleId AND (u.userName=:#{#n.userName} or :#{#n.userName} is null)")
List<UserProjection> find(@Param("n")SysUser user);
(u.userName=:#{#n.userName} or :#{#n.userName} is null)")
这种是在sql语句做个非空判断,如果是空,就跳过这个条件,不执行
就是这么简单,铁子们