标签:返回结果 没有 对象 manager sys 测试用例 entity 实体 概念
JPQL 语言,即 Java Persistence Query Language 的简称。JPQL 和 HQL 是非常类似的,支持以面向对象的方式来写 SQL 语句,当然也支持本地的 SQL 语句。JPQL 最终会被编译成针对不同底层数据库的 SQL 查询从而屏蔽掉不同数据库的差异。
javax.persistence.Query 接口封装了执行数据查询的相关方法。主要方法如下:
查询:
package test.java;
import com.yunche.helloworld.Customer;
import com.yunche.helloworld.Order;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import javax.persistence.*;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**
* @ClassName: MappingTest
* @Description: 测试类
* @author: yunche
* @date: 2019/01/18
*/
public class MappingTest {
private EntityManagerFactory entityManagerFactory;
private EntityManager entityManager;
private EntityTransaction transaction;
@Before
public void init() {
entityManagerFactory = Persistence.createEntityManagerFactory("jpa-1");
entityManager = entityManagerFactory.createEntityManager();
transaction = entityManager.getTransaction();
transaction.begin();
}
@After
public void destroy() {
transaction.commit();
entityManager.close();
entityManagerFactory.close();
}
@Test
public void testSelectJPQL() {
String jpql = "FROM Customer WHERE id = ?1";
Query query = entityManager.createQuery(jpql);
query.setParameter(1, 1);
Customer customer = (Customer) query.getSingleResult();
System.out.println(customer.getName());
}
}
修改:
@Test
public void testUpdateJPQL() {
String jpql = "UPDATE Customer SET name=?1 WHERE id=?2";
Query query = entityManager.createQuery(jpql);
query.setParameter(1, "Bob").setParameter(2, 1);
// 返回受影响的行数
System.out.println(query.executeUpdate());
}
添加(没有 INSERT):
/**
* 试了下, JPQL 中没有 INSERT 这个测试用例是通不过的
* 可能为了让们我尽量使用 EntityManager 中的 persist() 方法吧,也是 JPA 毕竟提倡我们少写 SQL
*/
@Test
public void testInsertJPQL() {
String jpql = "INSERT INTO Customer(name, email, age) VALUES(?1, ?2, ?3)";
Query query = entityManager.createQuery(jpql);
query.setParameter(1, "Mike").setParameter(2, "Mike@163.com").setParameter(3, 20);
System.out.println(query.executeUpdate());
}
删除:
@Test
public void testDeleteJPQL() {
String jpql = "DELETE FROM Customer WHERE id = ?1";
Query query = entityManager.createQuery(jpql);
query.setParameter(1, 1);
System.out.println(query.executeUpdate());
}
标签:返回结果 没有 对象 manager sys 测试用例 entity 实体 概念
原文地址:https://www.cnblogs.com/yunche/p/10294249.html