spring-cloud-jpa

使用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中的使用
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值