使用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語句中的表明變為實體類類名

    字段名改為實體類屬性名


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM