使用springdatajpa框架实现增删改查

在实现增删该查之前准备工作  和入门一样

在测试类中:

  1 package cn.yqk.jpa;
  2 
  3 import cn.yqk.pojo.Customer;
  4 import org.junit.Before;
  5 import org.junit.Test;
  6 
  7 import javax.persistence.*;
  8 import java.util.List;
  9 
 10 /**
 11  * @author Yang
 12  * @date 2019/8/15 13:58
 13  */
 14 public class JpaManager {
 15     private EntityManagerFactory entityManagerFactory;
 16     private EntityManager entityManager;
 17     EntityTransaction transaction;
 18     @Before  //表示在优先执行
 19     public void init(){//初始化方法
 20           //创建EntityManagerFactory工厂
 21         entityManagerFactory =     
 22         Persistence.createEntityManagerFactory("myjpa"); 
 23         //根据factory工厂对象获Entity对象
 24         entityManager = entityManagerFactory.createEntityManager();
 25         transaction = entityManager.getTransaction();      
 26     }
 27  //添加
 28     @Test
 29     public void addCustomer() {
 30         //开启事务
 31         transaction.begin();
 32         for (int i = 0; i < 20; i++) {
 33             Customer customer = new Customer();
 34             customer.setCstName("张" + i);
 35             customer.setCstAddress("豫" + i);
 36             customer.setCstIndustry("测试");
 37             customer.setCstLevel("VIP" + i);
 38             customer.setCstSource("00" + i);
 39             entityManager.persist(customer);
 40         }
 41         //提交事务
 42         transaction.commit();
 43         //关闭释放资源
 44         entityManager.close();
 45         entityManagerFactory.close();
 46 
 47     }
 48 //删除数据
 49     @Test
 50     public void delCustomer() {
 51         //开启事务
 52         transaction.begin();
 53         //删除数据之前要先查询数据
 54         //查询数据
 55         Customer customer = entityManager.find(Customer.class, 20l);
 56         //删除该数据
 57         entityManager.remove(customer);
 58         //提交事务
 59         transaction.commit();
 60         //关闭
 61         entityManager.close();
 62         entityManagerFactory.close();
 63     }
 64 
 65     //修改数据
 66     @Test
 67     public void update() {
 68         //开启事务
 69         transaction.begin();
 70         //修改数据之前也熬先查询一条customer信息
 71         Customer customer = entityManager.find(Customer.class, 19l);
 72         customer.setPhone("1111111");
 73         customer.setCstSource("测试");
 74         customer.setCstIndustry("aaa");
 75         customer.setCstAddress("asd");
 76         customer.setCstName("张憨憨");
 77         //修改方法merge
 78         entityManager.merge(customer);
 79         //提交事务
 80         transaction.commit();
 81         //关闭连接
 82         entityManager.close();
 83         entityManagerFactory.close();
 84     }
 85 
 86     //根据id查询(find方法)  即时加载
 87     @Test
 88     public void findById() {
 89         Customer customer = entityManager.find(Customer.class, 19l);
 90         System.out.println("============================");
 91         //打印结果
 92         System.out.println(customer);
 93         //关闭连接
 94         entityManager.close();
 95         entityManagerFactory.close();
 96     }
 97 
 98     //根据id查询(getReference)  延时加载  当访问对象时加载
 99     @Test
100     public void findById0() {
101         Customer reference = entityManager.getReference(Customer.class, 18l);
102         System.out.println(reference);
103         entityManager.close();
104         entityManagerFactory.close();
105     }
106 
107     //JPQL查询  相当于sql语句中的一个变种
108     //查询全部
109     @Test
110     public void findAll() {
111         //使用EntityManager创建Query对象
112         Query query = entityManager.createQuery("from Customer");
113         //使用query对象执行查询
114         List<Customer> resultList = query.getResultList();
115         for (Customer customer : resultList) {
116             System.out.println(customer);
117         }
118         entityManager.close();
119         entityManagerFactory.close();
120     }
121 
122     //分页查询
123     @Test
124     public void findByPage() {
125         //创建query对象
126         Query query = entityManager.createQuery("from Customer");
127         //设置分页信息
128 //        query.setFirstResult(0);//表示从第几个开始
129 //        query.setMaxResults(5);//表示每页显示的数据
130 //        List<Customer> resultList = query.getResultList();
131 //        for(Customer customer:resultList){
132 //            System.out.println(customer);
133 //        }
134         for (int i = 0; i < 20; i += 5) {
135             System.out.println(i == 0);
136             query.setFirstResult(i);
137             query.setMaxResults(5);
138             List<Customer> resultList = query.getResultList();
139             for (Customer customer : resultList) {
140                 System.out.println(customer);
141             }
142             System.out.println("=======================");
143         }
144         entityManager.close();
145     }
146 
147     //带条件查询
148     //根据id查询
149     @Test
150     public void findById2() {
151         Query query = entityManager.createQuery("from Customer where cstId=?1");
152         //设置条件
153         //表示给编号为1的参数设值  编号可以为0或任意正整数但必须与?后面的值保持一致 并且?与后面的数值中间不能用空格
154         query.setParameter(1, 9l);
155         Customer customer = (Customer) query.getSingleResult();
156         System.out.println(customer);
157         entityManager.close();
158     }
159 
160     //模糊查询
161     @Test
162     public void findM() {
163         Query query = entityManager.createQuery("from Customer where cstName like ?1 and cstAddress like ?2");
164         //设置参数
165         query.setParameter(1, "%张%");
166         query.setParameter(2, "%豫%");
167         List<Customer> resultList = query.getResultList();
168         for (Customer customer : resultList) {
169             System.out.println(customer);
170         }
171         entityManager.close();
172     }
173     //排序
174     @Test
175     public void findAllByOrder(){
176         //desc 倒序
177         Query query = entityManager.createQuery("from Customer order by cstId desc");
178         List<Customer> resultList = query.getResultList();
179         for (Customer customer:resultList){
180             System.out.println(customer);
181         }
182         entityManager.close();
183     }
184     //聚合函数
185     @Test
186     public void findAllCount(){
187 //        Query query = entityManager.createQuery("select count(*) from Customer");
188         Query query = entityManager.createQuery("select sum(cstId) from Customer");
189         Object count = query.getSingleResult();
190         System.out.println(count);
191         entityManager.close();
192     }
193 }

总结:

  1.入门程序  引入依赖     编写配置文件 编写实体类   测试代码

  2.测试方法     

    添加     persist  删除     remove (需要注意的是使用remove时要先查询)  修改   merge   查询  find(即时加载)  getReference(延时加载   在访问对象时加载)

  3.JPQL

    把sql语句中的表明变为实体类类名

    字段名改为实体类属性名

猜你喜欢

转载自www.cnblogs.com/yufudiaodayu/p/11359165.html