Spring Data JPA 动态查询 普通查询

 前言:

      依赖jar包源码地址:https://github.com/slyak/spring-data-jpa-extra https://github.com/slyak/spring-data-jpa-extra

      spring-data-jpa-extra 来解决三个问题:

  • 动态原生查询支持,如 mybatis
  • 返回类型可以是任何东西
  • 没有代码,只有 sql

1、版本依赖

<dependency>
   <groupId>com.slyak</groupId>
   <artifactId>spring-boot-starter-jpa-extra</artifactId>
   <version>2.1.1.RELEASE</version>
</dependency>

 注意依赖版本!

2、配置config

/**
 * spring-data-jpa-extra配置类
 */
@Configuration
@EnableJpaRepositories(basePackages = "com.aug.jpa.orm", repositoryBaseClass = GenericJpaRepositoryImpl.class, repositoryFactoryBeanClass = GenericJpaRepositoryFactoryBean.class)
public class JpaExtraConfiguration {

}

3、Dao层继承及使用说明

  1.   动态查询在dao方法上加注解
    @TemplateQuery  
    /**
     * @Description:
     * @Auther: tsy
     * @Date: 2022/08/09/3:29 下午
     */
    @Repository
    //extends JpaRepository 默认继承
    //public interface UserRepository extends JpaRepository<User, Integer>, JpaSpecificationExecutor<User> {
    //extends GenericJpaRepository 支持模版自定义动态sql查询
    public interface UserRepository extends GenericJpaRepository<User, Long>, JpaSpecificationExecutor<User> {
    
        User findByName(String userName);
    
        @Query("select n from User n where n.name = ?1")
        User find(String userName);
    
        @Query(value = "select n.id,n.name from orm_user n where n.name = ?1", nativeQuery = true)
        User findByUserName(String userName);
    
        @TemplateQuery
        List<UserBo> findUserBos();
    
        @TemplateQuery
        UserBo findUserBoById();
    
        @TemplateQuery
        Page<User> queryUserList(@Param("userParam") UserParam userParam, Pageable pageable);
    }
    
  2. 创建.sftl文件 
-- findUserBos
select id, name as userName, phone_number as phoneNumber from orm_user

-- queryUserList
select *
from orm_user
where id = :id
order by
id desc

-- findUserBoById
select id, name as userName, phone_number as phoneNumber
from orm_user
where id = 1

4、结果演示

编辑

5、项目结构

 编辑

posted @   木樨唐  阅读(370)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示