spring-cloud-jpa

来源:互联网 发布:highcharts.js 下载 编辑:程序博客网 时间:2024/04/28 19:03
使用spring-cloud-jpa
1、配置jpa
在resource文件的yml文件下面创建jpa的ddl有多种选择
1、ddl-auto: create
--这个参数设置后会每次启动自动在数据库中创建表,如果表中有数据会把表现删掉,然后在重新创建表
show-sql: true
--设置为true会自动打印sql语句

2、ddl-auto: update
--第一次启动的时候也会创建表,但是如果里面有数据的话它是不会进行drop操作

2、解决事务问题@Transactional
使用@Transactional声明事务,默认spring-cloud 整合的项目开启了注解扫描,直接可以这个标签
@Transactional可以定义到类上面,也可以定义到方法上面,调整颗粒度



3、Repository类的定义
public interface Repository<T,ID extends Serializable>{
}
1)Repository 是一个空接口,标记接口
没有包含方法声明的接口

2)如果我们定义的接口   XXX extends Repository

如果我们不继承的接口没有extends Repository,运行的时候会报错,错误:这个对象没有被纳入到spring管理
org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of tyep 'xxxx全路径' available

3)添加注解能达到不用extends Repository的功能
@RepositoryDefinition(domainClass = (pojo).class,idClass = (主键类型).class)

4、Repository的子接口讲解
1) CrudRepository:继承Repository,实现CRUD相关的方法

2)PagingAndSortingRepository:继承了CrudRepository,实现了分页排序的相关方法

3)JpaRepository:继承PagingAndSortingRepository,实现JPA规范相关的方法

5、Repository中查询对于按照方法命名规则来使用的话,有弊端
1)方法名会比较成:约定大于配置
2)对于复杂的查询,很难实现

6、annotation @Query
1)在Respository方法中使用,不需要遵循查询方法命名规则
2)只需要将@Query定义在Respository中的方法之上即可
3)命名参数及索引参数的使用

@Query("select u from user u where u.open_id =?1")
User getUserByMax(String openId)
@Query("select * from user u where u.open_id = :openId")
User getUserByMax(@Param("openId") String openId)

7、更新和删除操作整合事务的使用
1)@Modifying注解使用
2)@Modifying结合@Query注解执行更新操作
3)@Transactional在Spring Data中的使用
原创粉丝点击