spring data 接口之 CrudRepository

来源:互联网 发布:淘宝天猫分销平台 编辑:程序博客网 时间:2024/06/05 02:12

CrudRepository 接口继承于 Repository 接口,并新增了简单的增、删、查等方法

[java] view plain copy
  1.        long count();   
  2. boolean exists(Integer arg0);  
  3.   
  4. <S extends StudentPO> S save(S arg0);  
  5. <S extends StudentPO> Iterable<S> save(Iterable<S> arg0);  
  6.   
  7. void delete(Integer arg0);  
  8. void delete(Iterable<? extends StudentPO> arg0);  
  9. void delete(StudentPO arg0);  
  10. void deleteAll();  
  11.   
  12. StudentPO findOne(Integer arg0);  
  13. Iterable<StudentPO> findAll();  
  14. Iterable<StudentPO> findAll(Iterable<Integer> arg0);  

二 声明继承CrudRepository 的接口:IStudentCrudRepository

[java] view plain copy
  1. package org.zgf.spring.data.dao;  
  2.   
  3. import org.springframework.data.jpa.repository.Modifying;  
  4. import org.springframework.data.jpa.repository.Query;  
  5. import org.springframework.data.repository.CrudRepository;  
  6. import org.zgf.spring.data.entity.StudentPO;  
  7.   
  8. /** 
  9.  * CrudRepository 接口继承于 Repository 接口 
  10.  *  
  11.  *  
  12.  * @author: zonggf 
  13.  * @date: 2016年1月15日-下午12:57:50 
  14.  */  
  15. public interface IStudentCrudRepository extends CrudRepository<StudentPO, Integer> {  
  16.   
  17. /** CrudRepository 接口继承于 Repository 接口,并新增了如下方法 
  18.     long count();  
  19.     boolean exists(Integer arg0); 
  20.      
  21.     <S extends StudentPO> S save(S arg0); 
  22.     <S extends StudentPO> Iterable<S> save(Iterable<S> arg0); 
  23.  
  24.     void delete(Integer arg0); 
  25.     void delete(Iterable<? extends StudentPO> arg0); 
  26.     void delete(StudentPO arg0); 
  27.     void deleteAll(); 
  28.  
  29.     StudentPO findOne(Integer arg0); 
  30.     Iterable<StudentPO> findAll(); 
  31.     Iterable<StudentPO> findAll(Iterable<Integer> arg0); 
  32.      
  33. */  
  34.       
  35.     // 使用query 注解进行update 或者 delete 语句时,需要添加 modifying 注解修饰  
  36.     @Query(value="delete from spj_student_2",nativeQuery=true)  
  37.     @Modifying  
  38.     public void deleteAllBySql();  
  39.       
  40. }  

二 测试类Test_IStudentCrudRepository

[java] view plain copy
  1. package org.zgf.spring.data.dao;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.Date;  
  5. import java.util.List;  
  6.   
  7. import org.junit.Test;  
  8. import org.springframework.beans.factory.annotation.Autowired;  
  9. import org.zgf.spring.data.base.BaseTest;  
  10. import org.zgf.spring.data.dao.IStudentCrudRepository;  
  11. import org.zgf.spring.data.entity.StudentPO;  
  12.   
  13. /** 
  14.  * @ClassName: Test_IStudentCrudRepository 
  15.  * @Description:  
  16.  * @author: zonggf 
  17.  * @date: 2016年1月15日-下午1:01:35 
  18.  */  
  19. public class Test_IStudentCrudRepository extends BaseTest{  
  20.     @Autowired  
  21.     private IStudentCrudRepository studentCrudRepository;  
  22.       
  23.       
  24.     /** 
  25.      *  查询表中所有数量 
  26.      *  Hibernate: select count(*) as col_0_0_ from spj_student studentpo0_ 
  27.      */  
  28.     @Test  
  29.     public void test_count(){  
  30.         Long cnt = this.studentCrudRepository.count();  
  31.         System.out.println("studnetPO total count: " + cnt);  
  32.           
  33.     }  
  34.       
  35.     /** 
  36.      *  判断是否存在:只能根据id进行判断 
  37.      *  Hibernate: select count(*) as col_0_0_ from spj_student studentpo0_ where studentpo0_.id=? and 1=1 
  38.      */  
  39.     @Test  
  40.     public void test_exsists_ID(){  
  41.         boolean isExsists = this.studentCrudRepository.exists(2);  
  42.         System.out.println(isExsists);  
  43.     }  
  44.       
  45.       
  46.     /**  
  47.      * 测试保存对象 ,需要注意两点:1. 发送的sql语句  2. 主键返回 
  48.      *   1. 如果保存的实体,有主键id,那么会执行两条sql 语句, 实体id 为原有id,非数据库自增id 
  49.      *        Hibernate: select studentpo0_.id as id1_0_0_, studentpo0_.age as age2_0_0_, studentpo0_.birth as birth3_0_0_, studentpo0_.create_time as create_t4_0_0_, studentpo0_.name as name5_0_0_, studentpo0_.sex as sex6_0_0_ from spj_student studentpo0_ where studentpo0_.id=? 
  50.      *        Hibernate: insert into spj_student (age, birth, create_time, name, sex) values (?, ?, ?, ?, ?) 
  51.      *   2. 如果保存的实体,主键设置为null,那么只会执行一条sql 语句,实体id 为数据库中自增id 
  52.      *        Hibernate: insert into spj_student (age, birth, create_time, name, sex) values (?, ?, ?, ?, ?) 
  53.      */  
  54.     @Test  
  55.     public void test_save(){  
  56.         StudentPO student = new StudentPO("zong","man",new Date(),new Date(),26);  
  57.         student.setId(10);  
  58.         this.studentCrudRepository.save(student);  
  59.         System.out.println(student);  
  60.         //StudentPO [id=10, name=zong, sex=man, age=26, birth=Fri Jan 15 14:14:56 CST 2016, createTime=Fri Jan 15 14:14:56 CST 2016]  
  61.     }  
  62.       
  63.     @Test  
  64.     public void test_save_2(){  
  65.         StudentPO student = new StudentPO("zong","man",new Date(),new Date(),26);  
  66.         student.setId(null);  
  67.         this.studentCrudRepository.save(student);  
  68.         System.out.println(student);  
  69.         //StudentPO [id=11, name=zong, sex=man, age=26, birth=Fri Jan 15 14:15:28 CST 2016, createTime=Fri Jan 15 14:15:28 CST 2016]  
  70.   
  71.     }  
  72.       
  73.     /**  测试批量保存 执行多条sql 语句, 批量保存和单个保存需要注意的问题一致 
  74.         Hibernate: insert into spj_student (age, birth, create_time, name, sex) values (?, ?, ?, ?, ?) 
  75.         Hibernate: insert into spj_student (age, birth, create_time, name, sex) values (?, ?, ?, ?, ?) 
  76.         Hibernate: insert into spj_student (age, birth, create_time, name, sex) values (?, ?, ?, ?, ?) 
  77.         Hibernate: insert into spj_student (age, birth, create_time, name, sex) values (?, ?, ?, ?, ?) 
  78.         Hibernate: insert into spj_student (age, birth, create_time, name, sex) values (?, ?, ?, ?, ?) 
  79.      */  
  80.     @Test  
  81.     public void test_save_Iterable(){  
  82.         StudentPO student = new StudentPO("zong","man",new Date(),new Date(),26);  
  83.         StudentPO student1 = new StudentPO("zong1","man",new Date(),new Date(),27);  
  84.         StudentPO student2 = new StudentPO("zong2","man",new Date(),new Date(),28);  
  85.         StudentPO student3 = new StudentPO("zong3","man",new Date(),new Date(),29);  
  86.         StudentPO student4 = new StudentPO("zong4","man",new Date(),new Date(),30);  
  87.           
  88.         List<StudentPO> list = new ArrayList<>();  
  89.         list.add(student);  
  90.         list.add(student1);  
  91.         list.add(student2);  
  92.         list.add(student3);  
  93.         list.add(student4);  
  94.           
  95.         this.studentCrudRepository.save(list);  
  96.     }  
  97.       
  98.     /** 
  99.         Hibernate: select studentpo0_.id as id1_0_0_, studentpo0_.age as age2_0_0_, studentpo0_.birth as birth3_0_0_, studentpo0_.create_time as create_t4_0_0_, studentpo0_.name as name5_0_0_, studentpo0_.sex as sex6_0_0_ from spj_student studentpo0_ where studentpo0_.id=? 
  100.         Hibernate: select studentpo0_.id as id1_0_0_, studentpo0_.age as age2_0_0_, studentpo0_.birth as birth3_0_0_, studentpo0_.create_time as create_t4_0_0_, studentpo0_.name as name5_0_0_, studentpo0_.sex as sex6_0_0_ from spj_student studentpo0_ where studentpo0_.id=? 
  101.         Hibernate: select studentpo0_.id as id1_0_0_, studentpo0_.age as age2_0_0_, studentpo0_.birth as birth3_0_0_, studentpo0_.create_time as create_t4_0_0_, studentpo0_.name as name5_0_0_, studentpo0_.sex as sex6_0_0_ from spj_student studentpo0_ where studentpo0_.id=? 
  102.         Hibernate: select studentpo0_.id as id1_0_0_, studentpo0_.age as age2_0_0_, studentpo0_.birth as birth3_0_0_, studentpo0_.create_time as create_t4_0_0_, studentpo0_.name as name5_0_0_, studentpo0_.sex as sex6_0_0_ from spj_student studentpo0_ where studentpo0_.id=? 
  103.         Hibernate: select studentpo0_.id as id1_0_0_, studentpo0_.age as age2_0_0_, studentpo0_.birth as birth3_0_0_, studentpo0_.create_time as create_t4_0_0_, studentpo0_.name as name5_0_0_, studentpo0_.sex as sex6_0_0_ from spj_student studentpo0_ where studentpo0_.id=? 
  104.         Hibernate: update spj_student set age=?, birth=?, create_time=?, name=?, sex=? where id=? 
  105.         Hibernate: update spj_student set age=?, birth=?, create_time=?, name=?, sex=? where id=? 
  106.         Hibernate: update spj_student set age=?, birth=?, create_time=?, name=?, sex=? where id=? 
  107.         Hibernate: update spj_student set age=?, birth=?, create_time=?, name=?, sex=? where id=? 
  108.         Hibernate: update spj_student set age=?, birth=?, create_time=?, name=?, sex=? where id=? 
  109.         StudentPO [id=1, name=zong, sex=man, age=26, birth=Fri Jan 15 14:21:50 CST 2016, createTime=Fri Jan 15 14:21:50 CST 2016] 
  110.         StudentPO [id=2, name=zong1, sex=man, age=27, birth=Fri Jan 15 14:21:50 CST 2016, createTime=Fri Jan 15 14:21:50 CST 2016] 
  111.         StudentPO [id=3, name=zong2, sex=man, age=28, birth=Fri Jan 15 14:21:50 CST 2016, createTime=Fri Jan 15 14:21:50 CST 2016] 
  112.         StudentPO [id=4, name=zong3, sex=man, age=29, birth=Fri Jan 15 14:21:50 CST 2016, createTime=Fri Jan 15 14:21:50 CST 2016] 
  113.         StudentPO [id=5, name=zong4, sex=man, age=30, birth=Fri Jan 15 14:21:50 CST 2016, createTime=Fri Jan 15 14:21:50 CST 2016] 
  114.      */  
  115.     @Test  
  116.     public void test_save_Iterable_2(){  
  117.         StudentPO student = new StudentPO(1"zong","man",new Date(),new Date(),26);  
  118.         StudentPO student1 = new StudentPO(2"zong1","man",new Date(),new Date(),27);  
  119.         StudentPO student2 = new StudentPO(3"zong2","man",new Date(),new Date(),28);  
  120.         StudentPO student3 = new StudentPO(4"zong3","man",new Date(),new Date(),29);  
  121.         StudentPO student4 = new StudentPO(5"zong4","man",new Date(),new Date(),30);  
  122.           
  123.         List<StudentPO> list = new ArrayList<>();  
  124.         list.add(student);  
  125.         list.add(student1);  
  126.         list.add(student2);  
  127.         list.add(student3);  
  128.         list.add(student4);  
  129.           
  130.         this.studentCrudRepository.save(list);  
  131.           
  132.         for (StudentPO studentPO : list) {  
  133.             System.out.println(studentPO);  
  134.         }  
  135.     }  
  136.       
  137.     /** 测试查询单个对象,如果不存在则返回null 
  138.      *  局限性:只能通过id 查询 
  139.      *  Hibernate: select studentpo0_.id as id1_0_0_, studentpo0_.age as age2_0_0_, studentpo0_.birth as birth3_0_0_, studentpo0_.create_time as create_t4_0_0_, studentpo0_.name as name5_0_0_, studentpo0_.sex as sex6_0_0_ from spj_student studentpo0_  
  140.      *             where studentpo0_.id=? 
  141.      */  
  142.     @Test  
  143.     public void test_findOne(){  
  144.         StudentPO studentPO = this.studentCrudRepository.findOne(100);  
  145.         System.out.println(studentPO);  
  146.     }  
  147.       
  148.     /** 
  149.      * 查询表中所有记录(慎用,如果表中有几十万条数据,那么程序就得崩了) 
  150.      * Hibernate: select studentpo0_.id as id1_0_, studentpo0_.age as age2_0_, studentpo0_.birth as birth3_0_, studentpo0_.create_time as create_t4_0_, studentpo0_.name as name5_0_, studentpo0_.sex as sex6_0_ from spj_student studentpo0_ 
  151.      */  
  152.     @Test  
  153.     public void test_findAll(){  
  154.         List<StudentPO> list = (List<StudentPO>) this.studentCrudRepository.findAll();  
  155.         for (StudentPO studentPO : list) {  
  156.             System.out.println(studentPO);  
  157.         }  
  158.     }  
  159.       
  160.     /** 
  161.      * 根据id 列表查询, 采用的是in 
  162.      * Hibernate: select studentpo0_.id as id1_0_, studentpo0_.age as age2_0_, studentpo0_.birth as birth3_0_, studentpo0_.create_time as create_t4_0_, studentpo0_.name as name5_0_, studentpo0_.sex as sex6_0_ from spj_student studentpo0_  where studentpo0_.id in (? , ? , ?) 
  163.      */  
  164.     @Test  
  165.     public void test_findAll_Iterable(){  
  166.         List<Integer> idList = new ArrayList<>();  
  167.         idList.add(1);  
  168.           
  169.         List<StudentPO> studentList = (List<StudentPO>) this.studentCrudRepository.findAll(idList);  
  170.         for (StudentPO studentPO : studentList) {  
  171.             System.out.println(studentPO);  
  172.         }  
  173.           
  174.     }  
  175.       
  176.       
  177.     /** 
  178.      * 根据id 删除 
  179.      * Hibernate: select studentpo0_.id as id1_0_0_, studentpo0_.age as age2_0_0_, studentpo0_.birth as birth3_0_0_, studentpo0_.create_time as create_t4_0_0_, studentpo0_.name as name5_0_0_, studentpo0_.sex as sex6_0_0_ from spj_student studentpo0_ where studentpo0_.id=? 
  180.        Hibernate: delete from spj_student where id=? 
  181.      */  
  182.     @Test  
  183.     public void test_delete(){  
  184.         this.studentCrudRepository.delete(11);  
  185.     }  
  186.       
  187.     /** 
  188.      * 删除对象 
  189.      * Hibernate: select studentpo0_.id as id1_0_0_, studentpo0_.age as age2_0_0_, studentpo0_.birth as birth3_0_0_, studentpo0_.create_time as create_t4_0_0_, studentpo0_.name as name5_0_0_, studentpo0_.sex as sex6_0_0_ from spj_student studentpo0_ where studentpo0_.id=? 
  190.      * Hibernate: select studentpo0_.id as id1_0_0_, studentpo0_.age as age2_0_0_, studentpo0_.birth as birth3_0_0_, studentpo0_.create_time as create_t4_0_0_, studentpo0_.name as name5_0_0_, studentpo0_.sex as sex6_0_0_ from spj_student studentpo0_ where studentpo0_.id=? 
  191.      * Hibernate: delete from spj_student where id=? 
  192.      */  
  193.     @Test  
  194.     public void test_delete_T(){  
  195.         StudentPO studentPO = this.studentCrudRepository.findOne(10);  
  196.         this.studentCrudRepository.delete(studentPO);  
  197.     }  
  198.       
  199.     /*  删除list 
  200.         Hibernate: select studentpo0_.id as id1_0_0_, studentpo0_.age as age2_0_0_, studentpo0_.birth as birth3_0_0_, studentpo0_.create_time as create_t4_0_0_, studentpo0_.name as name5_0_0_, studentpo0_.sex as sex6_0_0_ from spj_student studentpo0_ where studentpo0_.id=? 
  201.         Hibernate: select studentpo0_.id as id1_0_0_, studentpo0_.age as age2_0_0_, studentpo0_.birth as birth3_0_0_, studentpo0_.create_time as create_t4_0_0_, studentpo0_.name as name5_0_0_, studentpo0_.sex as sex6_0_0_ from spj_student studentpo0_ where studentpo0_.id=? 
  202.         Hibernate: select studentpo0_.id as id1_0_0_, studentpo0_.age as age2_0_0_, studentpo0_.birth as birth3_0_0_, studentpo0_.create_time as create_t4_0_0_, studentpo0_.name as name5_0_0_, studentpo0_.sex as sex6_0_0_ from spj_student studentpo0_ where studentpo0_.id=? 
  203.         //delete(Iterable) 执行的语句 
  204.         Hibernate: select studentpo0_.id as id1_0_0_, studentpo0_.age as age2_0_0_, studentpo0_.birth as birth3_0_0_, studentpo0_.create_time as create_t4_0_0_, studentpo0_.name as name5_0_0_, studentpo0_.sex as sex6_0_0_ from spj_student studentpo0_ where studentpo0_.id=? 
  205.         Hibernate: select studentpo0_.id as id1_0_0_, studentpo0_.age as age2_0_0_, studentpo0_.birth as birth3_0_0_, studentpo0_.create_time as create_t4_0_0_, studentpo0_.name as name5_0_0_, studentpo0_.sex as sex6_0_0_ from spj_student studentpo0_ where studentpo0_.id=? 
  206.         Hibernate: select studentpo0_.id as id1_0_0_, studentpo0_.age as age2_0_0_, studentpo0_.birth as birth3_0_0_, studentpo0_.create_time as create_t4_0_0_, studentpo0_.name as name5_0_0_, studentpo0_.sex as sex6_0_0_ from spj_student studentpo0_ where studentpo0_.id=? 
  207.         Hibernate: delete from spj_student where id=? 
  208.         Hibernate: delete from spj_student where id=? 
  209.         Hibernate: delete from spj_student where id=? 
  210.      */  
  211.     @Test  
  212.     public void test_delete_Iterable(){  
  213.         List<StudentPO> idList = new ArrayList<>();  
  214.         idList.add(this.studentCrudRepository.findOne(9));  
  215.         idList.add(this.studentCrudRepository.findOne(8));  
  216.         idList.add(this.studentCrudRepository.findOne(7));  
  217.           
  218.         this.studentCrudRepository.delete(idList);  
  219.     }  
  220.       
  221.     /** 
  222.          Hibernate: select studentpo0_.id as id1_0_, studentpo0_.age as age2_0_, studentpo0_.birth as birth3_0_, studentpo0_.create_time as create_t4_0_, studentpo0_.name as name5_0_, studentpo0_.sex as sex6_0_ from spj_student studentpo0_ 
  223.          Hibernate: delete from spj_student where id=? 
  224.          Hibernate: delete from spj_student where id=? 
  225.          Hibernate: delete from spj_student where id=? 
  226.          Hibernate: delete from spj_student where id=? 
  227.          Hibernate: delete from spj_student where id=? 
  228.          Hibernate: delete from spj_student where id=? 
  229.      */  
  230.     @Test  
  231.     public void test_delete_all(){  
  232.         this.studentCrudRepository.deleteAll();  
  233.     }  
  234.   
  235. }  

阅读全文
0 0
原创粉丝点击