[Spring Data Repositories]学习笔记--使用现有的repository
2014-08-05 15:48
501 查看
以下内容是在学习Spring-Data-mongoDB中的Spring Data Repositories时做的一些笔记。备忘!
感觉学习还是看官方的资料比较透彻一些。
Spring Data Repositories目的:减少重复的持久化代码。
常用的几个repository interface,
Repository <-- CurdRepository <-- PagingAndSortingRepository
最后一个主要是用来做分页和排序用的。
Repository使用步骤
1. 定义接口
如果我们不想暴漏从Repository继承来的所有方法,可以用@NoRepositoryBean来进行标记。
这样UserRepository里面就只有3个方法。
2. 为上面定义的接口定义方法
Spring可以根据方法的名字来进行查找
AND, OR, Between, LessThan, GreaterThan, 哪些操作符可用与所用的数据库有关。
IgnoreCase and AllIgnoreCase
OrderBy (Asc or Desc)
支持多级属性,比如根据x.address.zipCode进行搜索, 可用
或者
注意:如果你的属性名称中包含_,比如first_name,需要用两个_来代表是下划线。
3. 为接口配置Spring(只列出xml, base-package是接口所在的包名)
可以用include-filter/exclude-filter来对接口进行过滤
4. 通过注入方式获得repository的实例,进行使用
感觉学习还是看官方的资料比较透彻一些。
Spring Data Repositories目的:减少重复的持久化代码。
常用的几个repository interface,
Repository <-- CurdRepository <-- PagingAndSortingRepository
最后一个主要是用来做分页和排序用的。
Repository使用步骤
1. 定义接口
public Interface PersonRepository extends Repository<User,Long>{...}
如果我们不想暴漏从Repository继承来的所有方法,可以用@NoRepositoryBean来进行标记。
@NoRepositoryBean Interface MyBaseRepository<T,ID extends Serializable> extends Repository<T,ID>{ T findOne(ID id); T save(T entity); } Interface UserRepository extends MyBaseRepository<User,Long>{ User findByEmailAddress(EmailAddress emailAddress); }
这样UserRepository里面就只有3个方法。
2. 为上面定义的接口定义方法
List<Person> findByLastname(String lastname);
Spring可以根据方法的名字来进行查找
public interface PersonRepository extends Repository<User,Long>{ List<Person> findByEmailAddressAndLastname(EmailAddress emailAddress, String lastname); List<Person> findDistinctPeopleByLastnameOrFirstname(String lastname, String firstname); List<Person> findByLastnameAndFirstnameAllIgnoreCase(String lastname, String firstname); List<Person> findByLastnameOrderByFirstnameAsc(String lastname); }
AND, OR, Between, LessThan, GreaterThan, 哪些操作符可用与所用的数据库有关。
IgnoreCase and AllIgnoreCase
OrderBy (Asc or Desc)
支持多级属性,比如根据x.address.zipCode进行搜索, 可用
List<Person> findByAddressZipCode(ZipCode zipCode);
或者
List<Person> findByAddress_ZipCode(ZipCode zipCode);
注意:如果你的属性名称中包含_,比如first_name,需要用两个_来代表是下划线。
3. 为接口配置Spring(只列出xml, base-package是接口所在的包名)
<jpa:repositories base-package="com.acme.repositories"/>
可以用include-filter/exclude-filter来对接口进行过滤
<repositories base-package="com.acme.repositories"> <context:exclude-filter type="regex" expression=".*SomeRepository"/> </repositories>
4. 通过注入方式获得repository的实例,进行使用
public class SomeClient { @Autowired private PersonRepository repository; public void doSomething(){ List<Person> persons = repository.findByLastname("Matthews"); } }
相关文章推荐
- [Spring Data Repositories]学习笔记--为repository添加通用的方法
- [Spring Data Repositories]学习笔记--定义自己的repository
- springboot 学习笔记【3】Spring Boot中使用Spring-data-jpa
- 【SpringBoot学习笔记】SpringBoot_01_SpringData—JpaRepository查询功能
- 【SpringBoot学习笔记】SpringBoot_03_SpringData—JpaRepository部分字段查询功能
- springboot 学习笔记【4】Spring Boot中使用Spring-data-jpa
- Spring第六讲学习笔记,使用注解开发。Repository,Service,Controller
- Spring学习笔记 关于Bean定义的重用-使用abstract以及parent标签属性
- ITCAST视频-Spring学习笔记(使用构造器装配属性)
- [转]spring学习笔记:annotation的使用3
- Spring学习笔记 使用XML配置实现Bean的auto-wiring (自动绑定)
- Spring学习笔记 关于Bean属性的初始化 - 使用inner bean以及List, Map与Set的初始化
- Java 学习笔记07:使用Spring的Dao连接数据库
- Java 学习笔记13:Spring JSTL 核心标签库 使用
- Spring学习笔记 使用Non-Static Factory(非静态工厂类)创建Bean
- spring学习笔记5——Spring里使用JDBC
- Spring学习笔记 使用annotation配置实现Bean的auto-wiring (自动绑定)
- ITCAST视频-Spring学习笔记(使用Spring的注解方式实现AOP入门)
- ITCAST视频-Spring学习笔记(使用Spring的注解方式实现AOP的细节)
- Spring学习笔记(14)----使用Spring的注解方式实现AOP