Spring-data

一、Repository

Repository类的定义:

public interface Repository<T, ID extends Serializable> {

}

二、Repository接口详解

1)Repository是一个空接口,标记接口
没有包含方法声明的接口

2)如果我们定义的接口EmployeeRepository extends Repository,就会被spring所管理

如果我们自己的接口没有extends Repository,运行时会报错:

org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.tinner.repository.EmployeeRepository' available

3) 添加注解能到达到不用extends Repository的功能

@RepositoryDefinition(domainClass = Employee.class, idClass = Integer.class)

三、Repository的子接口

  • CrudRepository:继承Repository,实现了CRUD相关的方法
  • PagingAndSortingRepository:继承CrudRepository,实现了分页排序相关的方法
  • JpaRepository:继承PagingAndSortingRepository,实现JPA规范相关的方法

四、弊端

对于按照方法命名规则来使用的话,有弊端:

  • 方法名会比较长: 约定大于配置
  • 对于一些复杂的查询,是很难实现

五、@Query注解

  • 使用这个注解可以支持原生sql。
  • 加了nativeQuery = true后,sql为原生sql,不加nativeQuery = true时,sql语句中from写的是entity名称,加了nativeQuery = true后sql就是原生的数据库中的写法,from后写的是表名。要注意的是写原生态的sql得到的结果如果是model,需要进行转换,否则会出现转换异常~

六、事务在Spring data中的使用:

  • 事务一般是在Service层,@Transactional放在service层
  • @Query、 @Modifying、@Transactional的综合使用

七、相关代码

相关代码链接:https://github.com/jinping-dev/spring-data

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值