当前位置: 首页 > 教程 > JPA >

JPA JPQL基本操作

精华
小牛编辑
179浏览
2023-03-14

JPQL允许我们创建静态和动态查询。 现在,我们将在下表中使用这两种查询来执行一些基本的JPQL操作。

JPQL动态查询示例

在这个例子中,我们将使用createQuery()方法从数据库中获取单个列的值。

完整的目录结构如下 -

文件:StudentEntity.java -

package com.yiibai.jpa;

import javax.persistence.*;

@Entity
@Table(name = "student")
public class StudentEntity {

    @Id
    private int s_id;
    private String s_name;
    private int s_age;

    public StudentEntity(int s_id, String s_name, int s_age) {
        super();
        this.s_id = s_id;
        this.s_name = s_name;
        this.s_age = s_age;
    }

    public StudentEntity() {
        super();
    }

    public int getS_id() {
        return s_id;
    }

    public void setS_id(int s_id) {
        this.s_id = s_id;
    }

    public String getS_name() {
        return s_name;
    }

    public void setS_name(String s_name) {
        this.s_name = s_name;
    }

    public int getS_age() {
        return s_age;
    }

    public void setS_age(int s_age) {
        this.s_age = s_age;
    }

}

配置文件:Persistence.xml -

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1"
    xmlns="http://xmlns.jcp.org/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
    <persistence-unit name="Student_details">
        <class>com.yiibai.jpa.StudentEntity</class>  
        <properties>
            <property name="javax.persistence.jdbc.driver"
                value="com.mysql.jdbc.Driver" />
            <property name="javax.persistence.jdbc.url"
                value="jdbc:mysql://localhost:3306/testdb?serverTimezone=UTC" />
            <property name="javax.persistence.jdbc.user" value="root" />
            <property name="javax.persistence.jdbc.password"
                value="123456" />
            <property name="eclipselink.logging.level" value="SEVERE" />
            <property name="eclipselink.ddl-generation"
                value="create-or-extend-tables" />
        </properties>
    </persistence-unit>

</persistence>

文件:FetchColumn.java -

package com.yiibai.jpa.jpql;

import javax.persistence.*;
import java.util.*;

public class FetchColumn {

    public static void main(String args[]) {

        EntityManagerFactory emf = Persistence.createEntityManagerFactory("Student_details");
        EntityManager em = emf.createEntityManager();
        em.getTransaction().begin();

        Query query = em.createQuery("Select s.s_name from StudentEntity s");
        @SuppressWarnings("unchecked")
        List<String> list = query.getResultList();
        System.out.println("Student Name :");
        for (String s : list) {

            System.out.println(s);

        }

        em.close();
        emf.close();
    }

}

执行上面示例代码,得到以下结果 -

Student Name :
Gaurav
Rahul
Chris
Ronit
Roy

JPQL静态查询示例

在这个例子中,我们将使用createNamedQuery()方法从数据库中获取单个列的值。

文件:StudentEntity.java -

package com.yiibai.jpa;

import javax.persistence.*;

@Entity
@Table(name = "student")
@NamedQuery(name = "find name", query = "Select s from StudentEntity s")
public class StudentEntity {

    @Id
    private int s_id;
    private String s_name;
    private int s_age;

    public StudentEntity(int s_id, String s_name, int s_age) {
        super();
        this.s_id = s_id;
        this.s_name = s_name;
        this.s_age = s_age;
    }

    public StudentEntity() {
        super();
    }

    public int getS_id() {
        return s_id;
    }

    public void setS_id(int s_id) {
        this.s_id = s_id;
    }

    public String getS_name() {
        return s_name;
    }

    public void setS_name(String s_name) {
        this.s_name = s_name;
    }

    public int getS_age() {
        return s_age;
    }

    public void setS_age(int s_age) {
        this.s_age = s_age;
    }

}

文件:FetchColumn.java -

package com.yiibai.jpa.jpql;

import javax.persistence.*;
import java.util.*;

import javax.persistence.*;

import com.yiibai.jpa.StudentEntity;

import java.util.*;

public class FetchColumn {

    public static void main(String args[]) {

        EntityManagerFactory emf = Persistence.createEntityManagerFactory("Student_details");
        EntityManager em = emf.createEntityManager();
        em.getTransaction().begin();

        Query query = em.createNamedQuery("find name");
        @SuppressWarnings("unchecked")
        List<StudentEntity> list = query.getResultList();
        System.out.println("Student Name :");
        for (StudentEntity s : list) {

            System.out.println(s.getS_name());

        }

        em.close();
        emf.close();
    }

}

执行上面示例代码,得到以下结果 -