项目结构
- fumao-app
- fumao-common
- fumao-company
- fumao-system
- fumao-service
- controller里面调用, 聚合其他几个模块的代码
- fumao-bi
jpa相关
快速查询
单表条件查询
@QueryItem(type = QueryType.Eq) 等等
多表条件查询
@QueryItem(join = QueryJoinType.Inner, type = QueryType.equal, column = "实体里面的属性.表属性">
QueryBuilder.build(条件对象) 返回 Predicate 可交给SpringData 查询
非外键原则
@Fetch(FetchMode.JOIN)
@ManyToOne()
@JoinColumn(name = "本实体ID", referencedColumnName = "关联ID", insertable = false, updatable = false, foreignKey = @ForeignKey(name = "none", value = ConstraintMode.NO_CONSTRAINT))
@NotFound(action=NotFoundAction.IGNORE)
权限
使用spring security
- 配置项
- 过滤器
- 注解
- PreAuthorize(AuthRoles.xxxExp)
- 使用
- 实现LoginUser接口
- 调用JwtUtils.encode
- 方法或者类上面加PreAuthorize注解
- 动态角色实现 AccessDecisionManager 接口
集团实例, 基于flyway
新建集团的时候会手动跑Flyway方法, 创建一个新实例
目前策略
主库
系统数据
集团数据
集团库
集团数据
业务数据
- DBRouteFilter
- 从请求上下文自动企切库
- 集团端和业务端从JWT中抽取库
- C端和B端, 从URL中收取库
- DynamicDataSource
- DBConfiguration
- CompanyConfiguration