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<15610554031@163.com>
* @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<15610554031@163.com>
* @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<15610554031@163.com>
* @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<15610554031@163.com>
* @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);

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程宝库

 Druid简介Java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,又不得不使用数据库连接池。Druid 是阿里巴巴开源平台上一个数据库连接池实现,结合了 C3P0、D ...