JPA学习之自定义简单查询和JPQL

自定义简单查询

概念:根据方法名自动生成SQL。

语法主要的语法是findXXBy,readAXXBy,queryXXBy,countXXBygetXXBy后面跟属性名称

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处理的时候加上%

 

posted on 2018-12-06 15:46  legion  阅读(387)  评论(0编辑  收藏  举报

导航