欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring Boot整合QueryDSL的實現(xiàn)示例

 更新時間:2020年09月04日 08:32:26   作者:周兆東  
這篇文章主要介紹了Spring Boot整合QueryDSL的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

之前研究Jooq,今天來研究一下搭配JPA的QueryDSL吧。

簡介

Querydsl 是一個Java開源框架用于構(gòu)建類型安全的SQL查詢語句。它采用API代替拼湊字符串來構(gòu)造查詢語句??筛?Hibernate 和 JPA 等框架結(jié)合使用。

新建Spring Boot項目

。。。還說啥?

1. pom.xml

<dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
 
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <scope>runtime</scope>
    </dependency>
 
    <!--QueryDSL支持-->
    <dependency>
      <groupId>com.querydsl</groupId>
      <artifactId>querydsl-apt</artifactId>
      <scope>provided</scope>
    </dependency>
    
    <!--QueryDSL支持-->
    <dependency>
      <groupId>com.querydsl</groupId>
      <artifactId>querydsl-jpa</artifactId>
    </dependency>
 
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
      <exclusions>
        <exclusion>
          <groupId>org.junit.vintage</groupId>
          <artifactId>junit-vintage-engine</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
  </dependencies>
 
  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
	  <!-- 這個插件是為了讓程序自動生成query type(查詢實體,命名方式為:"Q"+對應(yīng)實體名) -->
      <plugin>
        <groupId>com.mysema.maven</groupId>
        <artifactId>apt-maven-plugin</artifactId>
        <version>1.1.3</version>
        <executions>
          <execution>
            <goals>
              <goal>process</goal>
            </goals>
            <configuration>
              <outputDirectory>target/generated-sources/java</outputDirectory>
              <processor>com.querydsl.apt.jpa.JPAAnnotationProcessor</processor>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

2. application.yml

server:
 port: 8888
spring:
 datasource:
  url: jdbc:mysql://IP地址:3306/querydsl?characterEncoding=UTF-8
  username: 用戶名
  password: 密碼
 jpa:
  show-sql: true # 控制臺打印SQL
  hibernate:
   ddl-auto: update

3. JPAQueryFactory Bean

/**
 * JPAQueryFactory Bean
 * @author zhouzhaodong
 */
@Configuration
public class PeopleQueryConfig {
  @Bean
  public JPAQueryFactory jpaQuery(EntityManager entityManager) {
    return new JPAQueryFactory(entityManager);
  }
}

4. 新建實體類

/**
 * 實體類
 * @author zhouzhaodong
 */
@Entity
@Table(name="people")
public class People {
 
  @Id
  @Column(name="id")
  @GeneratedValue
  private Integer id;
 
  @Column(name="name")
  private String name;
 
  @Column(name="age")
  private Integer age;
 
  @Column(name="address")
  private String address;
 
  public Integer getId() {
    return id;
  }
 
  public void setId(Integer id) {
    this.id = id;
  }
 
  public String getName() {
    return name;
  }
 
  public void setName(String name) {
    this.name = name;
  }
 
  public Integer getAge() {
    return age;
  }
 
  public void setAge(Integer age) {
    this.age = age;
  }
 
  public String getAddress() {
    return address;
  }
 
  public void setAddress(String address) {
    this.address = address;
  }
}

5. 新建service

/**
 * service
 * @author zhouzhaodong
 */
public interface PeopleService {
 
  /**
   * 根據(jù)id查詢
   * @param id
   * @return
   */
  People selectOne(Integer id);
 
}

6. 新建serviceImpl

/**
 * serviceImpl
 * @author zhouzhaodong
 */
@Service
public class PeopleServiceImpl implements PeopleService {
 
  @Resource
  JPAQueryFactory queryFactory;
 
  @Override
  public People selectOne(Integer id) {
    QPeople people = QPeople.people;
    return queryFactory.selectFrom(people).where(people.id.eq(id)).fetchOne();
  }
}

7. 新建controller

/**
 * controller
 * @author zhouzhaodong
 */
@RestController
public class PeopleController {
 
  @Resource
  PeopleService peopleService;
 
  @RequestMapping("/selectById")
  public People selectById(){
    return peopleService.selectOne(0);
  }
 
}

8. 新建repository,可以使用JPA原有的功能

/**
 * 實現(xiàn)jpaRepository
 * @author zhouzhaodong
 */
public interface PeopleRepository extends JpaRepository<People, Integer> {
}

9. postman測試

數(shù)據(jù)庫數(shù)據(jù)如下:

請求結(jié)果:

 

Github代碼地址:https://github.com/zhouzhaodong/springboot/tree/master/querydsl

到此這篇關(guān)于Spring Boot整合QueryDSL的實現(xiàn)示例的文章就介紹到這了,更多相關(guān)SpringBoot整合QueryDSL內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java如何手動創(chuàng)建線程池

    Java如何手動創(chuàng)建線程池

    這篇文章主要介紹了Java如何手動創(chuàng)建線程池,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • Spring?Boot指定外部配置文件簡單示例

    Spring?Boot指定外部配置文件簡單示例

    Spring Boot可以讓你將配置外部化,這樣你就可以在不同的環(huán)境中使用相同的應(yīng)用程序代碼,這篇文章主要給大家介紹了關(guān)于Spring?Boot指定外部配置文件的相關(guān)資料,需要的朋友可以參考下
    2024-01-01
  • Java關(guān)鍵字之native詳解

    Java關(guān)鍵字之native詳解

    這篇文章主要為大家介紹了Java關(guān)鍵字之native,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • JAVA實現(xiàn)經(jīng)典游戲坦克大戰(zhàn)的示例代碼

    JAVA實現(xiàn)經(jīng)典游戲坦克大戰(zhàn)的示例代碼

    小時候大家都玩過坦克大戰(zhàn)吧,熟悉的旋律和豐富的關(guān)卡陪伴了我們一整個寒暑假。本文將通過Java+Swing實現(xiàn)這一經(jīng)典游戲,感興趣的可以學(xué)習(xí)一下
    2022-01-01
  • Mybatis-Plus條件構(gòu)造器select方法返回指定字段方式

    Mybatis-Plus條件構(gòu)造器select方法返回指定字段方式

    這篇文章主要介紹了Mybatis-Plus條件構(gòu)造器select方法返回指定字段方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Springboot單體架構(gòu)http請求轉(zhuǎn)換https請求來支持微信小程序調(diào)用接口

    Springboot單體架構(gòu)http請求轉(zhuǎn)換https請求來支持微信小程序調(diào)用接口

    這篇文章主要介紹了Springboot單體架構(gòu)http請求轉(zhuǎn)換https請求來支持微信小程序調(diào)用接口,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • springboot配置logback日志管理過程詳解

    springboot配置logback日志管理過程詳解

    這篇文章主要介紹了springboot配置logback日志管理過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-09-09
  • Java中隨機數(shù)的產(chǎn)生方式與原理詳解

    Java中隨機數(shù)的產(chǎn)生方式與原理詳解

    這篇文章主要介紹了Java中隨機數(shù)的產(chǎn)生方式與原理詳解的相關(guān)資料,需要的朋友可以參考下
    2016-11-11
  • 利用Java提取PDF表格到文本、CSV及excel工作表

    利用Java提取PDF表格到文本、CSV及excel工作表

    如何精準(zhǔn)地提取PDF格式中嵌入的表格數(shù)據(jù),并將其無縫轉(zhuǎn)換為更加易于分析和操作的形式,是一項重要的文檔處理技巧,本文將介紹如何利用Java從PDF文檔提取表格數(shù)據(jù),并寫入文本文件、CSV文件以及Excel工作表,需要的朋友可以參考下
    2024-09-09
  • Java簡單實現(xiàn)UDP和TCP的示例

    Java簡單實現(xiàn)UDP和TCP的示例

    下面小編就為大家?guī)硪黄狫ava簡單實現(xiàn)UDP和TCP的示例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11

最新評論