JPA like 模糊查詢 語法格式解析

JPA like 模糊查詢 語法格式

	public List<InstitutionInfo> getAllInstitution(final Application app){
		String zdGljg = null;
		Sysuser user = (Sysuser) app.getUser();
		String userGljg = user.getGljg();
		if("00".equals(userGljg.substring(4, 6))){//市級機構權限
			zdGljg = userGljg.substring(0, 4) + "%";
		}else if("00".equals(userGljg.substring(6, 8))){//區縣級機構權限
			zdGljg =  userGljg.substring(0, 6) + "%";
		}else{//鄉鎮級機構權限
			zdGljg = userGljg + "%";
		}
		Query query = entityManager.createQuery("select s from InstitutionInfo s where s.gljg like :zdGlbh ");
		query.setParameter("zdGlbh", zdGljg);
		List<InstitutionInfo> adg =query.getResultList();	
		return adg;
	}

模糊查詢:Spring Data JPA 如何進行模糊查詢(LIKE) ?

Spring MVC + Spring Data JPA+模糊查詢

為瞭方便起見,service直接忽略,方便理解。

一. 方法一

1. Controller層:

方法參數如下,一定要加 “%”+name+”%”

/**
 * @description:
 * @author: czx<[email protected]>
 * @date: 2018/1/22 下午5:15
 * @version: V1.0
 */
@RestController
public class UserController { 
    @Autowired
    private TeamRepository teamRepository;
 
    @GetMapping("/findByNameLike")
    public List<Team> findByNameLike(String name) {
        // 一定要加 "%"+參數名+"%"
        return teamRepository.findByNameLike("%"+name+"%");
    } 
}

2. Dao層:

一定要使用 JPA 規定的形式 findBy+參數名+Like(參數)

/**
 * @description: 數據層
 * @author: czx<[email protected]>
 * @date: 2018/1/18 上午10:52
 * @version: V1.0
 */
 
public interface TeamRepository extends JpaRepository<Team, String> {     
    List<Team> findByNameLike(String name);

二. 方法二

1. Controller:

參數簡單化

/**
 * @description:
 * @author: czx<[email protected]>
 * @date: 2018/1/22 下午5:15
 * @version: V1.0
 */
@RestController
public class UserController {
 
    @Autowired
    private TeamRepository teamRepository;
 
    @GetMapping("/findByNameLike")
    public List<Team> findByNameLike(String name) {
        return teamRepository.findByNameLike(name);
    } 
}

2.Dao層:

需要自己定義SQL語句

/**
 * @description: 
 * @author: czx<[email protected]>
 * @date: 2018/1/18 上午10:52
 * @version: V1.0
 */
 
public interface TeamRepository extends JpaRepository<Team, String> { 
    @Query(value = "select t from Team t where t.name like %?1%")
    List<Team> findByNameLike(String name);

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: