spring data 接口之 CrudRepository
来源:互联网 发布:淘宝网评价可以修改吗 编辑:程序博客网 时间:2024/06/05 09:57
CrudRepository 接口继承于 Repository 接口,并新增了简单的增、删、查等方法
二 声明继承CrudRepository 的接口:IStudentCrudRepository
二 测试类Test_IStudentCrudRepository
- 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)
- @Modifying
- public 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{
- @Autowired
- private IStudentCrudRepository studentCrudRepository;
- /**
- * 查询表中所有数量
- * Hibernate: select count(*) as col_0_0_ from spj_student studentpo0_
- */
- @Test
- public 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
- */
- @Test
- public 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 (?, ?, ?, ?, ?)
- */
- @Test
- public 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]
- }
- @Test
- public 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 (?, ?, ?, ?, ?)
- */
- @Test
- public 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]
- */
- @Test
- public 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=?
- */
- @Test
- public 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_
- */
- @Test
- public 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 (? , ? , ?)
- */
- @Test
- public 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=?
- */
- @Test
- public 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=?
- */
- @Test
- public void test_delete_T(){
- StudentPO studentPO = this.studentCrudRepository.findOne(10);
- this.studentCrudRepository.delete(studentPO);
- }
- /* 删除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=?
- //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=?
- */
- @Test
- public 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=?
- */
- @Test
- public 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 接口性能分析
- 关于HTTP GET请求的url中文参数编码
- 目标检测中背景建模方法总结
- Centos7 安装mysql5.7 (基于腾讯云)
- executeQuery、executeUpdate 和 execute返回值
- 此贴,将记录面试过程中遇到的问题和平时遇到的面试问题
- spring data 接口之 CrudRepository
- 使用ajax提交form表单
- frameset标签设计页面
- mycelipse2016安装svn
- Dubbo+zookeeper环境搭建
- Maven 之 profile 介绍(转载)
- [BZOJ1493][NOI2007]项链工厂(splay)
- 堆与栈
- Linux_ Linux下查看内存使用情况方法总结