spring boot的JPA用法

| 全查询 | findAll() | list集合 |

| 主键查询 | findById() | Optional< UserEntity>实体对象 |

| 自定义条件查询 | findByNameAndPassword(String name, Long password) | UserEntity实体 |

| 自定义模糊查询 | findByNameLike(“%”+name+“%”) | list集合 |

| 自定义查询 | 需要在jpa中声明自定义的方法,确保命名规范! | 可自定义 |

四、在spring data jpa中有4种查询方式:

1、@Query注解查询

  • 简介:在dao中增加接口方法并在方法上增加@Query注解并在注解中写hql语句来进行查询

  • 示例:

public interface TestDao extends JpaRepository<Test, Long> {

@Query(“select t from Test t where t.name = :keyWord”)

List findTest(@Param(“keyWord”) String keyWord);

}

@Query参数说明:

| 名称 | 简介 |

| — | — |

| value | 指定JPQL语句,当nativeQuery=true时是原生的sql语句 |

| countQuery | 指定count的JPQL语句,不指定则自动生成,当nativeQuery=true时是原生的sql语句 |

| countProjection | 依据哪个字段来count一般默认即可 |

| nativeQuery | 默认是false,表示value 里面是不是原生的Sql 语句 |

| name | 指定一个query 的名字,必须是唯一的。 如果不指定,默认的生成规则是:{$domainClass}.${queryMethodName} |

| countName | 指定一个count 的query 名字,必须是唯一的。如果不指定,默认的生成规则是:{$domainClass}.${queryMethodName}.count |

2、自定义简单查询

  • 简介:在dao中增加接口方法,并按照spring data jpa支持的模式命名方法,spring data jpa会按照指定规则生成sql语句

  • 示例:

public interface TestDao extends JpaRepository<Test, Long> {

List findByKeyword(String keyword);

}

3、通过Example查询

  • 简介:JpaRepository接口中包含了QueryByExampleExecutor,这个接口支持将实体作为参考进行查询

  • 示例:

//service中(前提是testDao继承了JpaRepository接口)

public List findTests() {

Test test = new Test();

test.setName(“aaa”);

return testDao.findAll(Example.of(test));

}

  • 注意事项:实体中只要有值的内容都会被放进查询条件中,若实体中包含基础类型例如int 就会以0进行匹配。

五、查询结果格式

1、Entity-List 使用默认形式即可

2、Map-List

  • 注意:其中as name必须写,不写则map中key为下标。

@Query(“select new map(t.name as name,t.value as value) from Test t where t.name = :keyWord”)

List<Map<String,Object>> findTest(@Param(“keyWord”) String keyWord);

3、Vo-List

  • 注意:与Map类似,使用构造方法的形式进行初始化,传入顺序必须与构造函数顺序一致

@Query(“select new TestVo(t.name as name,t.value as value) from Test t where t.name = :keyWord”)

List findTest(@Param(“keyWord”) String keyWord);

4、Projection-List

  • 注意:TestProjection为接口,有对应的get 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】 方法,这种模式就不需要使用new的方式传值,支持@value注解来指定getAll的数据来源。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值