日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > javascript >内容正文

javascript

SpringBoot整合QueryDSL

發(fā)布時(shí)間:2023/12/20 javascript 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringBoot整合QueryDSL 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1、創(chuàng)建父模塊

File-->New-->Project-->Spring Initializr-->Next

2、創(chuàng)建子模塊

右鍵父模塊-->New-->Module-->Next

依次創(chuàng)建web、service、entity模塊

完成后刪除所有mvnw、mvnw.cmd、HELP.md文件及.mvn目錄,除web外其他模塊的啟動(dòng)類、resource目錄、父模塊src目錄

3、父模塊pom添加

<packaging>pom</packaging> <!--父模塊打包類型必須為pom--> <modules><module>web</module><module>service</module><module>entity</module> </modules>

?4、子模塊pom添加依賴

<packaging>jar</packaging> <!-- web模塊引入web依賴 --> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- web模塊引入sql server驅(qū)動(dòng)依賴 --> <dependency><groupId>com.microsoft.sqlserver</groupId><artifactId>mssql-jdbc</artifactId><scope>runtime</scope> </dependency> <!-- web和service依賴entity --> <dependency><groupId>com.magnets</groupId><artifactId>entity</artifactId><version>0.0.1-SNAPSHOT</version><scope>compile</scope> </dependency><!-- web依賴service --> <dependency><groupId>com.magnets</groupId><artifactId>service</artifactId><version>0.0.1-SNAPSHOT</version><scope>compile</scope> </dependency> <!--entity中jpa依賴--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <!-- entity中Lombok依賴 --> <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId> </dependency>

?5、entity子模塊引入QueryDSL的相關(guān)maven依賴

<dependency><groupId>com.querydsl</groupId><artifactId>querydsl-jpa</artifactId><version>${querydsl.version}</version> </dependency> <dependency><groupId>com.querydsl</groupId><artifactId>querydsl-apt</artifactId><version>${querydsl.version}</version><scope>provided</scope> </dependency>

6、entity子模塊添加QueryDSL生成Q文件的插件

<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>

該插件會(huì)自動(dòng)掃描項(xiàng)目?jī)?nèi)配置了@Entity的實(shí)體類,并根據(jù)實(shí)體的內(nèi)定義的字段以及關(guān)聯(lián)類通過JPAAnnotationProcessor自動(dòng)創(chuàng)建Q[實(shí)體類名稱]的查詢實(shí)體,創(chuàng)建完成后會(huì)將實(shí)體存放到我們配置outputDirectory屬性目錄下。

?7、application.properties配置

server.port=8088spring.datasource.url=jdbc:sqlserver://192.168.0.202:1433;DatabaseName=Magnets spring.datasource.username=sa spring.datasource.password=123456 spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.SQLServer2008Dialect logging.level.com.wonder = DEBUG#Hibernate配置 spring.jpa.hibernate.ddl-auto=update spring.jpa.show-sql=true spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

8、啟動(dòng)類添加注解

//用于掃描@Controller @Service @ComponentScan(basePackages = "com.ouyin") //掃描實(shí)體 @EntityScan(basePackages ="com.magnets.machine.entity")

9、創(chuàng)建實(shí)體類

/*** @ClassName: BaseObject* @Description: 基類* @Author: WZH* @Date: 2019/9/14 13:38*/ @Data @MappedSuperclass public class BaseObject {@Id@Column(length = 36)private String id;@Column(length = 36)private String creator;@Column(length = 36)private String modifier;@Column(name = "createdtime")private Date createdTime;@Column(name = "modifiedtime")private Date modifiedTime; } /*** @ClassName: Plate* @Description: 推板管理* @Author: WZH* @Date: 2019/8/16 17:28*/ @EqualsAndHashCode(callSuper = true) @Data @Entity @Table(name = "Plate") public class Plate extends BaseObject {/** 推板條碼編號(hào) */@Column(name = "plate_code",nullable = false,length = 100)private String plateCode;/** 裝載數(shù)量 */@Column(name = "stowage_count",nullable = false)private Integer stowageCount;/** 關(guān)聯(lián)工單ID */@Column(name = "work_order_id",nullable = false,length = 36)private String workOrderId;/** 生產(chǎn)狀態(tài) */@Column(name = "status",nullable = false)private Integer status;/** 綁定ID */@Column(name = "binding_id",nullable = false,length = 36)private String bindingId; }

?10、使用Maven插件生成Q文件

maven工具-->entity-->Lifecycle-->compile生成Q文件在target目錄下,移至entity模塊代碼中,然后clean

11、在Service中使用

@Service public class CommonServiceImpl implements ICommonService {private final JPAQueryFactory factory;private final QPlate qPlate;private final EntityManager entityManager;@Autowiredpublic CommonServiceImpl(EntityManager entityManager) {this.entityManager = entityManager;this.factory = new JPAQueryFactory(entityManager);this.qPlate = QPlate.plate;}@Overridepublic Plate getPlate(String id) {return factory.selectFrom(qPlate).where(qPlate.id.eq(id)).fetchFirst();} }

具體使用請(qǐng)參看我的另一篇博文QueryDSL基本操作demo

12、其中save方法參看如下代碼

private void save(BaseObject object){object.setId(CommonUtil.getUUID());object.setCreatedTime(new Date());object.setModifiedTime(new Date());object.setCreator("machine");object.setModifier("machine");entityManager.persist(object); }

13、Controller和Service接口補(bǔ)全測(cè)試(不贅述)

總結(jié)

以上是生活随笔為你收集整理的SpringBoot整合QueryDSL的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。