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
- spring data 接口之 CrudRepository
- spring data 接口之 CrudRepository
- spring data 接口之 CrudRepository
- spring data 接口之 CrudRepository
- Spring Data JPA(1)--Repository和CrudRepository接口
- Spring Data 系列之JPA(一)CrudRepository,PagingAndSortingRepository,JpaRepository
- spring data 接口之 Repository
- spring data 接口之 PagingAndSortingRepository
- spring data 接口之 PagingAndSortingRepository
- SpringData中的CrudRepository接口
- Spring data 接口之 自定义Repository 接口
- spring data 接口之 JpaRepository,JpaSpecificationExecutor
- spring data 接口之 JpaRepository,JpaSpecificationExecutor
- spring data 接口之 JpaRepository,JpaSpecificationExecutor
- 【SpringData】轻松愉快之玩转SpringData( 第5章 CrudRepository PagingAndSortingRespsitory JpaRepository接口)
- spring data 自定义接口
- spring data jpa 自定义接口
- Spring data 接口性能分析
- php 判断类型
- maven deploy到私库
- STL的红与黑--rb_tree红黑树
- iOS CAReplicatorLayer简单笔记
- Educational Codeforces Round 2 D.Area of Two Circles' Intersection(计算几何)
- spring data 接口之 CrudRepository
- C++对象模型
- ID3算法
- spring data 接口之 PagingAndSortingRepository
- Ubuntu安装libgtk-x11-2.0
- Syntax error, parameterized types are only available if source level is 1.5 or greater
- linux的软链接
- ‘聪明的搜索算法’ A*算法
- 多个div放置在同一行