激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 詳解非spring框架下使用querydsl的方法

詳解非spring框架下使用querydsl的方法

2021-06-30 14:47penngo Java教程

Querydsl是一個采用API代替拼湊字符串來構造查詢語句,可跟 Hibernate 和 JPA 等框架結合使用。本文介紹的是非spring環(huán)境下querydsl JPA整合使用,感興趣的小伙伴們可以參考一下

querydsl是一個采用api代替拼湊字符串來構造查詢語句,可跟 hibernate 和 jpa 等框架結合使用。網上很多教程都是結合spring jpa框架下使用的教程,本文介紹的是非spring環(huán)境下querydsl jpa整合使用。

1、使用eclipse生成jpa實體類,idea也能生成同樣jpa實體類。

鼠標右鍵打開jpa tools工具:

詳解非spring框架下使用querydsl的方法

創(chuàng)建數(shù)據庫鏈接:

詳解非spring框架下使用querydsl的方法

詳解非spring框架下使用querydsl的方法

詳解非spring框架下使用querydsl的方法

選擇那些數(shù)據庫表需要生成jpa實體類:

詳解非spring框架下使用querydsl的方法

關聯(lián)表生成:

詳解非spring框架下使用querydsl的方法

設置實體生成屬性:

詳解非spring框架下使用querydsl的方法

單個實體屬性修改

詳解非spring框架下使用querydsl的方法

生成的jpa實體類adminlog.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
package com.test.db.entity;
 
import java.io.serializable;
import javax.persistence.*;
import java.util.date;
 
 
/**
 * the persistent class for the admin_log database table.
 *
 */
@entity
@table(name="admin_log")
@namedquery(name="adminlog.findall", query="select a from adminlog a")
public class adminlog implements serializable {
    private static final long serialversionuid = 1l;
 
    @id
    @generatedvalue(strategy=generationtype.auto)
    @column(unique=true, nullable=false)
    private string id;
 
    @column(name="action_id", length=20)
    private string actionid;
 
    @column(name="client_ip", length=15)
    private string clientip;
 
    @column(name="controller_id", length=20)
    private string controllerid;
 
    @temporal(temporaltype.timestamp)
    @column(name="create_date")
    private date createdate;
 
    @column(name="create_user", length=50)
    private string createuser;
 
    @column(name="func_name", length=50)
    private string funcname;
 
    @column(name="module_name", length=50)
    private string modulename;
 
    @column(name="right_name", length=50)
    private string rightname;
 
    @column(length=200)
    private string url;
 
    public adminlog() {
    }
 
    public string getid() {
        return this.id;
    }
 
    public void setid(string id) {
        this.id = id;
    }
 
    public string getactionid() {
        return this.actionid;
    }
 
    public void setactionid(string actionid) {
        this.actionid = actionid;
    }
 
    public string getclientip() {
        return this.clientip;
    }
 
    public void setclientip(string clientip) {
        this.clientip = clientip;
    }
 
    public string getcontrollerid() {
        return this.controllerid;
    }
 
    public void setcontrollerid(string controllerid) {
        this.controllerid = controllerid;
    }
 
    public date getcreatedate() {
        return this.createdate;
    }
 
    public void setcreatedate(date createdate) {
        this.createdate = createdate;
    }
 
    public string getcreateuser() {
        return this.createuser;
    }
 
    public void setcreateuser(string createuser) {
        this.createuser = createuser;
    }
 
    public string getfuncname() {
        return this.funcname;
    }
 
    public void setfuncname(string funcname) {
        this.funcname = funcname;
    }
 
    public string getmodulename() {
        return this.modulename;
    }
 
    public void setmodulename(string modulename) {
        this.modulename = modulename;
    }
 
    public string getrightname() {
        return this.rightname;
    }
 
    public void setrightname(string rightname) {
        this.rightname = rightname;
    }
 
    public string geturl() {
        return this.url;
    }
 
    public void seturl(string url) {
        this.url = url;
    }
 
}

2、生成querydsl查詢類

maven pom.xml文件

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
<project xmlns="http://maven.apache.org/pom/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"
    xsi:schemalocation="http://maven.apache.org/pom/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelversion>4.0.0</modelversion>
    <groupid>com.test.db</groupid>
    <artifactid>dbtest</artifactid>
    <packaging>jar</packaging>
    <version>1.0-snapshot</version>
    <name>dbtest</name>
    <url>http://maven.apache.org</url>
    <properties>
        <querydsl.version>4.2.1</querydsl.version>
    </properties>
    <dependencies>
        <dependency>
            <groupid>junit</groupid>
            <artifactid>junit</artifactid>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupid>com.querydsl</groupid>
            <artifactid>querydsl-sql</artifactid>
            <version>${querydsl.version}</version>
        </dependency>
        <dependency>
            <groupid>com.querydsl</groupid>
            <artifactid>querydsl-apt</artifactid>
            <version>${querydsl.version}</version>
        </dependency>
        <dependency>
            <groupid>com.querydsl</groupid>
            <artifactid>querydsl-jpa</artifactid>
            <version>${querydsl.version}</version>
        </dependency>
        <dependency>
            <groupid>com.querydsl</groupid>
            <artifactid>querydsl-sql-codegen</artifactid>
            <version>${querydsl.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupid>org.eclipse.persistence</groupid>
            <artifactid>org.eclipse.persistence.jpa</artifactid>
            <version>2.6.0</version>
        </dependency>
 
        <dependency>
            <groupid>org.slf4j</groupid>
            <artifactid>slf4j-log4j12</artifactid>
            <version>1.6.1</version>
        </dependency>
 
        <dependency>
            <groupid>mysql</groupid>
            <artifactid>mysql-connector-java</artifactid>
            <version>8.0.11</version>
        </dependency>
        <dependency>
            <groupid>com.alibaba</groupid>
            <artifactid>druid</artifactid>
            <version>1.1.10</version>
        </dependency>
 
        <dependency>
            <groupid>org.hibernate</groupid>
            <artifactid>hibernate-entitymanager</artifactid>
            <version>5.4.0.final</version>
        </dependency>
    </dependencies>
 
    <build>
        <plugins>
            <!-- 生成jpa實體插件 -->
            <plugin>
                <groupid>com.querydsl</groupid>
                <artifactid>querydsl-maven-plugin</artifactid>
                <version>${querydsl.version}</version>
                <executions>
                    <execution>
                        <phase>generate-sources</phase>
                        <goals>
                            <goal>jpa-export</goal>
                        </goals>
                        <configuration>
                            <targetfolder>${project.basedir}/target/generated-sources/java</targetfolder>
                            <packages>com.test.db.entity</packages>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <!-- 生成jpa實體插件 -->
            <!--
            <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>
           -->
            <plugin>
                <groupid>org.apache.maven.plugins</groupid>
                <artifactid>maven-compiler-plugin</artifactid>
                <version>3.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>utf-8</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

執(zhí)行命令mvn compile或mvn eclipse:eclipse生成jpa實體對應的querydsl查詢類

adminlog.java對應的querydsl對應查詢類

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package com.test.db.entity;
 
import static com.querydsl.core.types.pathmetadatafactory.*;
 
import com.querydsl.core.types.dsl.*;
 
import com.querydsl.core.types.pathmetadata;
import javax.annotation.generated;
import com.querydsl.core.types.path;
 
 
/**
 * qadminlog is a querydsl query type for adminlog
 */
@generated("com.querydsl.codegen.entityserializer")
public class qadminlog extends entitypathbase<adminlog> {
 
  private static final long serialversionuid = 392071999l;
 
  public static final qadminlog adminlog = new qadminlog("adminlog");
 
  public final stringpath actionid = createstring("actionid");
 
  public final stringpath clientip = createstring("clientip");
 
  public final stringpath controllerid = createstring("controllerid");
 
  public final datetimepath<java.util.date> createdate = createdatetime("createdate", java.util.date.class);
 
  public final stringpath createuser = createstring("createuser");
 
  public final stringpath funcname = createstring("funcname");
 
  public final stringpath id = createstring("id");
 
  public final stringpath modulename = createstring("modulename");
 
  public final stringpath rightname = createstring("rightname");
 
  public final stringpath url = createstring("url");
 
  public qadminlog(string variable) {
    super(adminlog.class, forvariable(variable));
  }
 
  public qadminlog(path<? extends adminlog> path) {
    super(path.gettype(), path.getmetadata());
  }
 
  public qadminlog(pathmetadata metadata) {
    super(adminlog.class, metadata);
  }
 
}

3、查詢例子

jpa持久化meta-inf\persistence.xml配置文件,entitymanagerfactory創(chuàng)建實例時,需要讀取該配置文件:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?xml version="1.0" encoding="utf-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
  xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"
  xsi:schemalocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
  version="2.0">
  <persistence-unit name="jpa" transaction-type="resource_local">
  <provider>org.hibernate.ejb.hibernatepersistence</provider>
    <properties>
      <!-- .mysqlinnodbdialect -->
        <property name="hibernate.dialect" value="org.hibernate.dialect.mysql8dialect"/>
      <property name="javax.persistence.jdbc.driver" value="com.mysql.cj.jdbc.driver" />
            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://127.0.0.1:3306/yiiboot?useunicode=true&characterencoding=utf-8&servertimezone=asia/shanghai&usessl=true" />
      <property name="javax.persistence.jdbc.user" value="root" />
      <property name="javax.persistence.jdbc.password" value="123" />
 
      <property name="connection.provider_class" value="com.alibaba.druid.support.hibernate.druidconnectionprovider" />
      <!-- 配置初始化大小、最小、最大 -->
      <property name="initialsize" value="1" />
      <property name="minidle" value="1" />
      <property name="maxactive" value="20" />
      <!-- 配置獲取連接等待超時的時間 -->
      <property name="maxwait" value="60000" />
 
      <!-- 配置間隔多久才進行一次檢測,檢測需要關閉的空閑連接,單位是毫秒 -->
      <property name="timebetweenevictionrunsmillis" value="60000" />
 
      <!-- 配置一個連接在池中最小生存的時間,單位是毫秒 -->
      <property name="minevictableidletimemillis" value="300000" />
    </properties>
  </persistence-unit>
</persistence>

測試代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package com.test.db.main;
 
import java.util.list;
import javax.persistence.entitymanagerfactory;
import javax.persistence.persistence;
import com.querydsl.jpa.impl.jpaqueryfactory;
import com.test.db.entity.adminmodule;
import com.test.db.entity.qadminmodule;
 
public class jpatest {
    public static void main(string[] args) throws exception{
        string persistenceunitname = "jpa";
        entitymanagerfactory entitymanagerfactory =
        persistence.createentitymanagerfactory(persistenceunitname);
        jpaqueryfactory queryfactory = new jpaqueryfactory(entitymanagerfactory.createentitymanager());
        qadminmodule adminmodule = qadminmodule.adminmodule;
        list<adminmodule> list = queryfactory.selectfrom(adminmodule).fetch();
        list.foreach(module->{
            system.out.println(module.getid() + "," + module.getdisplaylabel() + "," + module.getcreatedate());
        });
    }
}

querydsl官方文檔:http://www.querydsl.com/static/querydsl/latest/reference/html/ch02.html#jpa_integration

java類庫:https://www.21doc.net/java/awesomejava#database

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://my.oschina.net/penngo/blog/2998232

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 黄免费在线 | 久久免费视频精品 | 5xsq在线视频 | 亚洲第五色综合网 | 久色免费视频 | av免费在线免费观看 | 国产精品一区二区三区在线播放 | 国产精品视频一区二区三区综合 | 成年人黄色片视频 | 午夜精品毛片 | 久久精品国产99久久久古代 | 国产一区二区三区在线视频 | 久久久久久久久久久国产精品 | 九草网| 水卜樱一区二区av | 一级裸体视频 | 手机视频在线播放 | 久久久中精品2020中文 | 国产一级二级视频 | 夜夜夜精品视频 | 一本视频在线观看 | 亚洲黑人在线观看 | 日韩色视频 | 国语自产免费精品视频在 | 欧美一级理论 | 视频一区二区三区视频 | 免费一级特黄欧美大片勹久久网 | 欧美雌雄另类xxxxx | 进去了(高h) | 成人福利软件 | 国产精品久久久久久影院8一贰佰 | 538在线精品 | 精品国产一区二区在线观看 | 91免费视频版| 欧美一级黄色片免费观看 | 国产精品91久久久 | 欧美wwwsss9999 | 日韩美女电影 | 日本逼逼视频 | 久久成人免费网站 | 性少妇videosexfreexx入片 |