JPA学习之自定义简单查询和JPQL
自定义简单查询
概念:根据方法名自动生成SQL。
语法:主要的语法是findXXBy
,readAXXBy
,queryXXBy
,countXXBy
, getXXBy
后面跟属性名称
User findByUserName(String userName);
复习:SQL中的别名
a.为表取别名
SELECT * FROM USER AS u WHERE u.password='pwd2'
AS可以省略。
b.为字段取别名
SELECT email AS 邮箱,user_name AS NAME FROM USER
JPQL的使用
SELECT的语法
select 实体别名.属性名, 实体别名.属性名 from 实体名 as 实体别名 where 实体别名.实体属性 op 比较值
举例:
select p.name from book as p
LIke的用法
目标:查找密码以23开头的数据
从数据库中
使用原始SQL
SELECT * FROM USER WHERE PASSWORD LIKE '23%'
得到结果
方法名自动生成SQL
List<User> findByPasswordStartingWith(String pwd);
使用JPQL
@Transactional @Query("select u from User u where u.password like ?1%") List<User> like(String like); //或者 @Transactional @Query("select u from User u where u.password like ?1||'%'") List<User> like(String like);
Controller中
@GetMapping("/likePwd") public List<User> likePWd(@RequestParam(required = true) String pwd) { return userRepository.like(pwd);
另类方法:
JPQL语句中不加%,
Controller处理的时候加上%