spring data 接口之 CrudRepository

来源:互联网 发布:php 邮件内容html输出 编辑:程序博客网 时间:2024/05/17 08:59

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

        long count(); boolean exists(Integer arg0);<S extends StudentPO> S save(S arg0);<S extends StudentPO> Iterable<S> save(Iterable<S> arg0);void delete(Integer arg0);void delete(Iterable<? extends StudentPO> arg0);void delete(StudentPO arg0);void deleteAll();StudentPO findOne(Integer arg0);Iterable<StudentPO> findAll();Iterable<StudentPO> findAll(Iterable<Integer> arg0);

二 声明继承CrudRepository 的接口:IStudentCrudRepository

package org.zgf.spring.data.dao;import org.springframework.data.jpa.repository.Modifying;import org.springframework.data.jpa.repository.Query;import org.springframework.data.repository.CrudRepository;import org.zgf.spring.data.entity.StudentPO;/** * CrudRepository 接口继承于 Repository 接口 *  *  * @author: zonggf * @date: 2016年1月15日-下午12:57:50 */public interface IStudentCrudRepository extends CrudRepository<StudentPO, Integer> {/** CrudRepository 接口继承于 Repository 接口,并新增了如下方法long count(); boolean exists(Integer arg0);<S extends StudentPO> S save(S arg0);<S extends StudentPO> Iterable<S> save(Iterable<S> arg0);void delete(Integer arg0);void delete(Iterable<? extends StudentPO> arg0);void delete(StudentPO arg0);void deleteAll();StudentPO findOne(Integer arg0);Iterable<StudentPO> findAll();Iterable<StudentPO> findAll(Iterable<Integer> arg0);*/// 使用query 注解进行update 或者 delete 语句时,需要添加 modifying 注解修饰@Query(value="delete from spj_student_2",nativeQuery=true)@Modifyingpublic void deleteAllBySql();}

二 测试类Test_IStudentCrudRepository

package org.zgf.spring.data.dao;import java.util.ArrayList;import java.util.Date;import java.util.List;import org.junit.Test;import org.springframework.beans.factory.annotation.Autowired;import org.zgf.spring.data.base.BaseTest;import org.zgf.spring.data.dao.IStudentCrudRepository;import org.zgf.spring.data.entity.StudentPO;/** * @ClassName: Test_IStudentCrudRepository * @Description:  * @author: zonggf * @date: 2016年1月15日-下午1:01:35 */public class Test_IStudentCrudRepository extends BaseTest{@Autowiredprivate IStudentCrudRepository studentCrudRepository;/** * 查询表中所有数量 *Hibernate: select count(*) as col_0_0_ from spj_student studentpo0_ */@Testpublic void test_count(){Long cnt = this.studentCrudRepository.count();System.out.println("studnetPO total count: " + cnt);}/** * 判断是否存在:只能根据id进行判断 *Hibernate: select count(*) as col_0_0_ from spj_student studentpo0_ where studentpo0_.id=? and 1=1 */@Testpublic void test_exsists_ID(){boolean isExsists = this.studentCrudRepository.exists(2);System.out.println(isExsists);}/**  * 测试保存对象 ,需要注意两点:1. 发送的sql语句  2. 主键返回 * 1. 如果保存的实体,有主键id,那么会执行两条sql 语句, 实体id 为原有id,非数据库自增id *    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=? *      Hibernate: insert into spj_student (age, birth, create_time, name, sex) values (?, ?, ?, ?, ?) *   2. 如果保存的实体,主键设置为null,那么只会执行一条sql 语句,实体id 为数据库中自增id *      Hibernate: insert into spj_student (age, birth, create_time, name, sex) values (?, ?, ?, ?, ?) */@Testpublic void test_save(){StudentPO student = new StudentPO("zong","man",new Date(),new Date(),26);student.setId(10);this.studentCrudRepository.save(student);System.out.println(student);//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]}@Testpublic void test_save_2(){StudentPO student = new StudentPO("zong","man",new Date(),new Date(),26);student.setId(null);this.studentCrudRepository.save(student);System.out.println(student);//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]}/**  测试批量保存 执行多条sql 语句, 批量保存和单个保存需要注意的问题一致Hibernate: insert into spj_student (age, birth, create_time, name, sex) values (?, ?, ?, ?, ?)Hibernate: insert into spj_student (age, birth, create_time, name, sex) values (?, ?, ?, ?, ?)Hibernate: insert into spj_student (age, birth, create_time, name, sex) values (?, ?, ?, ?, ?)Hibernate: insert into spj_student (age, birth, create_time, name, sex) values (?, ?, ?, ?, ?)Hibernate: insert into spj_student (age, birth, create_time, name, sex) values (?, ?, ?, ?, ?) */@Testpublic void test_save_Iterable(){StudentPO student = new StudentPO("zong","man",new Date(),new Date(),26);StudentPO student1 = new StudentPO("zong1","man",new Date(),new Date(),27);StudentPO student2 = new StudentPO("zong2","man",new Date(),new Date(),28);StudentPO student3 = new StudentPO("zong3","man",new Date(),new Date(),29);StudentPO student4 = new StudentPO("zong4","man",new Date(),new Date(),30);List<StudentPO> list = new ArrayList<>();list.add(student);list.add(student1);list.add(student2);list.add(student3);list.add(student4);this.studentCrudRepository.save(list);}/** 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=?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=?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=?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=?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=?Hibernate: update spj_student set age=?, birth=?, create_time=?, name=?, sex=? where id=?Hibernate: update spj_student set age=?, birth=?, create_time=?, name=?, sex=? where id=?Hibernate: update spj_student set age=?, birth=?, create_time=?, name=?, sex=? where id=?Hibernate: update spj_student set age=?, birth=?, create_time=?, name=?, sex=? where id=?Hibernate: update spj_student set age=?, birth=?, create_time=?, name=?, sex=? where id=?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]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]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]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]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] */@Testpublic void test_save_Iterable_2(){StudentPO student = new StudentPO(1, "zong","man",new Date(),new Date(),26);StudentPO student1 = new StudentPO(2, "zong1","man",new Date(),new Date(),27);StudentPO student2 = new StudentPO(3, "zong2","man",new Date(),new Date(),28);StudentPO student3 = new StudentPO(4, "zong3","man",new Date(),new Date(),29);StudentPO student4 = new StudentPO(5, "zong4","man",new Date(),new Date(),30);List<StudentPO> list = new ArrayList<>();list.add(student);list.add(student1);list.add(student2);list.add(student3);list.add(student4);this.studentCrudRepository.save(list);for (StudentPO studentPO : list) {System.out.println(studentPO);}}/**测试查询单个对象,如果不存在则返回null *  局限性:只能通过id 查询 *  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=? */@Testpublic void test_findOne(){StudentPO studentPO = this.studentCrudRepository.findOne(100);System.out.println(studentPO);}/** * 查询表中所有记录(慎用,如果表中有几十万条数据,那么程序就得崩了) * 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_ */@Testpublic void test_findAll(){List<StudentPO> list = (List<StudentPO>) this.studentCrudRepository.findAll();for (StudentPO studentPO : list) {System.out.println(studentPO);}}/** * 根据id 列表查询, 采用的是in * 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 (? , ? , ?) */@Testpublic void test_findAll_Iterable(){List<Integer> idList = new ArrayList<>();idList.add(1);List<StudentPO> studentList = (List<StudentPO>) this.studentCrudRepository.findAll(idList);for (StudentPO studentPO : studentList) {System.out.println(studentPO);}}/** * 根据id 删除 * 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=?   Hibernate: delete from spj_student where id=? */@Testpublic void test_delete(){this.studentCrudRepository.delete(11);}/** * 删除对象 * 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=? * 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=? * Hibernate: delete from spj_student where id=? */@Testpublic void test_delete_T(){StudentPO studentPO = this.studentCrudRepository.findOne(10);this.studentCrudRepository.delete(studentPO);}/*  删除listHibernate: 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=?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=?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=?//delete(Iterable) 执行的语句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=?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=?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=?Hibernate: delete from spj_student where id=?Hibernate: delete from spj_student where id=?Hibernate: delete from spj_student where id=? */@Testpublic void test_delete_Iterable(){List<StudentPO> idList = new ArrayList<>();idList.add(this.studentCrudRepository.findOne(9));idList.add(this.studentCrudRepository.findOne(8));idList.add(this.studentCrudRepository.findOne(7));this.studentCrudRepository.delete(idList);}/** 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_ Hibernate: delete from spj_student where id=? Hibernate: delete from spj_student where id=? Hibernate: delete from spj_student where id=? Hibernate: delete from spj_student where id=? Hibernate: delete from spj_student where id=? Hibernate: delete from spj_student where id=? */@Testpublic void test_delete_all(){this.studentCrudRepository.deleteAll();}}


0 0
原创粉丝点击