十次方微服务day1 day2总结 (springdatajpa,跨域,统一异常处理 缓存)

1 .更深入了解了一点springdataJpa的使用

十次方微服务day1 day2总结 (springdatajpa,跨域,统一异常处理 缓存)

我们只需要用需要对数据访问的接口继承Repository接口和其子就可以拥有一系列对数据访问的方法。
其中PagingAndSortingRespository提供分页和排序功能

// JpaRepository

十次方微服务day1 day2总结 (springdatajpa,跨域,统一异常处理 缓存)
JpaRepository继承PagingAndSortingRepository,PagingAndSortingRepository又继承CrudRepository,也就是说我们平时自定义的接口只要继承JpaRepository,就相当于拥有了增删查改,分页,等等功能。

JpaSpecificationExecutor

十次方微服务day1 day2总结 (springdatajpa,跨域,统一异常处理 缓存)
用于做复杂的条件查询 可以用来自己封装条件 如下图

十次方微服务day1 day2总结 (springdatajpa,跨域,统一异常处理 缓存)
十次方微服务day1 day2总结 (springdatajpa,跨域,统一异常处理 缓存)

上述的操作其实还是比较麻烦的 其实我们可以直接按照方法命名规则来按照条件操作比如
十次方微服务day1 day2总结 (springdatajpa,跨域,统一异常处理 缓存)
我们只需要定义出这个方法 就会被翻译成这个sql 语句 select * from tb_enterprise where hot = ?
怎么样是不是很方便。
但是当我们需要进行更复杂的操作和条件 那么方法名就会变得很长 或者多表联合查询 该怎么做呢?比如

十次方微服务day1 day2总结 (springdatajpa,跨域,统一异常处理 缓存)

这时我们就可以使用sql语句
我们只需要在方法上加入@Query注解 在里面定义sql语句就行了 修改保存操作需要再加@Modifying
十次方微服务day1 day2总结 (springdatajpa,跨域,统一异常处理 缓存)
再这里可以看到如果想实现分页功能 只需要在方式上加一个Pageable参数就可以实现分页功能 这十分的方便 而Mybatis则需要使用一些分页插件

注意!如果不加入 nativeQuery = true 这个属性 这个语句就会被认为jpql语言
注意!如果加了@Modifying 就必须声明@transaction 否则会报错
十次方微服务day1 day2总结 (springdatajpa,跨域,统一异常处理 缓存)
十次方微服务day1 day2总结 (springdatajpa,跨域,统一异常处理 缓存)

2.用@CrossOrigin解决跨域问题

十次方微服务day1 day2总结 (springdatajpa,跨域,统一异常处理 缓存)

3.统一异常处理

十次方微服务day1 day2总结 (springdatajpa,跨域,统一异常处理 缓存)

我们只需要定义上述注解就能统一拦截异常并进行处理

4.文章和活动模块用到了缓存

查询文章用到缓存 并设置过期时间 这里用到springdataredis
首先导入依赖 并且修改配置文件 配置redis所在的服务器
十次方微服务day1 day2总结 (springdatajpa,跨域,统一异常处理 缓存)
然后自动装配RedisTemplate 这里比用Jedis来操作方便许多
十次方微服务day1 day2总结 (springdatajpa,跨域,统一异常处理 缓存)
修改和删除时要同时删除缓存里的数据

活动模块用到了spring cathe 这个的缺点是不能设置过期时间

使用方法先在启动类上注明
十次方微服务day1 day2总结 (springdatajpa,跨域,统一异常处理 缓存)
表示为GatheringApplication添加@EnableCaching开启缓存支持 然后

十次方微服务day1 day2总结 (springdatajpa,跨域,统一异常处理 缓存)
十次方微服务day1 day2总结 (springdatajpa,跨域,统一异常处理 缓存)