Spring Data JPA(1)--Repository和CrudRepository接口
来源:互联网 发布:jquery定义键值对数组 编辑:程序博客网 时间:2024/05/16 07:32
最近在学习Spring Data JPA的相关知识,感觉还是很不错的,提供了很多方法,包括CRUD和分页排序,基本能够满足现实的功能需求.
它一共提供了四个接口:
Repository: 仅仅是一个标识,表明任何继承它的均为仓库接口类,方便Spring自动扫描识别
CrudRepository: 继承Repository,实现了一组CRUD相关的方法
PagingAndSortingRepository: 继承CrudRepository,实现了一组分页排序相关的方法
JpaRepository: 继承PagingAndSortingRepository,实现一组JPA规范相关的方法
JpaSpecificationExecutor: 比较特殊,不属于Repository体系,实现一组JPA Criteria查询相关的方法
我写的实例:
/* * @RepositoryDefinition(domainClass = User.class,idClass = Integer.class)//使用该注解可以替代extends Repository */public interface UserRepository extends CrudRepository<User, Integer>{/* * Repository接口,他是一个空接口,仅仅是一个标识 *///hql操作的是对象,而sql操作的是表,所以这里的User指的是类//可以直接使用Repository提供的一些方法,但是必须方法的命名要遵守一定的规则,例如findByXx,findByXxLike,findByXxStartingWith...public User findByUname(String uname);//使用@Query注解来解决定义规则的麻烦和实现复杂查询,工作中用的比较多@Query("select o from User o")public List<User> showUsers();@Query("select o from User o where o.uno = ?1 and o.uname = ?2")public User findUser(int uno,String uname);//配合@Modifying注解和事务,可以完成更新和删除的操作,jpql不支持增加的操作@Modifying@Query("delete from User where uno=:uno")public void delUser(@Param("uno")int uno);@Modifying@Query("update User o set o.uname = :uname where uno = :uno")public void updUser(@Param("uno")int uno,@Param("uname")String uname);/* * CrudRepository接口继承Repository,提供了一组CRUD相关的方法,直接在测试类中测试findOne方法 */}CrudRepository接口 源代码所提供的方法:
<S extends T> S save(S entity);<S extends T> Iterable<S> save(Iterable<S> entities);T findOne(ID id);boolean exists(ID id);Iterable<T> findAll();Iterable<T> findAll(Iterable<ID> ids);long count();void delete(ID id);void delete(T entity);void delete(Iterable<? extends T> entities);void deleteAll();以findOne()方法为例,在单元测试中进行测试
public class UserRepositoryTest {private ApplicationContext ctx = null;private UserRepository userRepository = null;@Beforepublic void setUp(){ctx = new ClassPathXmlApplicationContext("beans.xml");userRepository = ctx.getBean(UserRepository.class);System.out.println("setup");}@Afterpublic void tearDown(){ctx = null;System.out.println("teardown");}@Testpublic void testQuery3(){System.out.println("start");User user = userRepository.findOne(1);System.out.println(user.toString());System.out.println("started");}
}
阅读全文
0 0
- Spring Data JPA(1)--Repository和CrudRepository接口
- spring data 接口之 CrudRepository
- spring data 接口之 CrudRepository
- spring data 接口之 CrudRepository
- spring data 接口之 CrudRepository
- Spring Data jpa Repository
- Spring Data JPA Repository
- Spring Data Jpa ---- repository
- Spring Data 系列之JPA(一)CrudRepository,PagingAndSortingRepository,JpaRepository
- spring-data-jpa原理探秘(1)-运行环境创建及加载Repository接口
- 学习 Repository 接口的第 1 个子接口 CRUDRepository
- spring data 接口之 Repository
- 测试Spring Data JPA的repository
- 初识Spring Data与JPA Repository
- 利用AOP为Spring Data Jpa的接口Repository添加全局自定义过滤
- spring data jpa 自定义接口
- Spring data 接口之 自定义Repository 接口
- SpringData 学习(6)—— 学习 Repository 接口的第 1 个子接口 CRUDRepository
- DOM 节点
- 解决windows下nginx无法启动80端口被vs占用问题
- spring-boot 启动图标修改-启动彩蛋
- JavaWeb-021-HttpSession概述
- 获取button文字的大小
- Spring Data JPA(1)--Repository和CrudRepository接口
- windows10编译hadoop2.6.4和2.8.3详解,成功率将近100%!!!
- CentOS7安装JDK
- spring学习笔记spring整合Quartz持久化稳健任务调度(2)
- Spring-001-环境搭建与第一个HelloWorld
- Android Studio提高编译速度的方法
- 贪食蛇
- jssip answer()问题
- 想用深度学习的方法检测一个零部件的不合格部位,如何下手? | 社区问答