十次方微服务day1 day2总结 (springdatajpa,跨域,统一异常处理 缓存)
1 .更深入了解了一点springdataJpa的使用
我们只需要用需要对数据访问的接口继承Repository接口和其子就可以拥有一系列对数据访问的方法。
其中PagingAndSortingRespository提供分页和排序功能
// JpaRepository
JpaRepository继承PagingAndSortingRepository,PagingAndSortingRepository又继承CrudRepository,也就是说我们平时自定义的接口只要继承JpaRepository,就相当于拥有了增删查改,分页,等等功能。
JpaSpecificationExecutor
用于做复杂的条件查询 可以用来自己封装条件 如下图
上述的操作其实还是比较麻烦的 其实我们可以直接按照方法命名规则来按照条件操作比如
我们只需要定义出这个方法 就会被翻译成这个sql 语句 select * from tb_enterprise where hot = ?
怎么样是不是很方便。
但是当我们需要进行更复杂的操作和条件 那么方法名就会变得很长 或者多表联合查询 该怎么做呢?比如
这时我们就可以使用sql语句
我们只需要在方法上加入@Query注解 在里面定义sql语句就行了 修改保存操作需要再加@Modifying
再这里可以看到如果想实现分页功能 只需要在方式上加一个Pageable参数就可以实现分页功能 这十分的方便 而Mybatis则需要使用一些分页插件
注意!如果不加入 nativeQuery = true 这个属性 这个语句就会被认为jpql语言
注意!如果加了@Modifying 就必须声明@transaction 否则会报错
2.用@CrossOrigin解决跨域问题
3.统一异常处理
我们只需要定义上述注解就能统一拦截异常并进行处理
4.文章和活动模块用到了缓存
查询文章用到缓存 并设置过期时间 这里用到springdataredis
首先导入依赖 并且修改配置文件 配置redis所在的服务器
然后自动装配RedisTemplate 这里比用Jedis来操作方便许多
修改和删除时要同时删除缓存里的数据
活动模块用到了spring cathe 这个的缺点是不能设置过期时间
使用方法先在启动类上注明
表示为GatheringApplication添加@EnableCaching开启缓存支持 然后