websocket reactive 路径匹配,类似 @ServerEndpoint,但是这个注解是在 WebFlux 里面使用的
可以查看这个示例:exp-websocket-reactive
websocket reactive 路径匹配,类似 @ServerEndpoint,但是这个注解是在 WebFlux 里面使用的
可以查看这个示例:exp-websocket-reactive
将对数据库的单表的简单的增删改查操作同步到任何处,可以是 NoSQL,可以是文件,甚至可以是其他第三方的接口,这些也全都可以自定义如何去实现
相关信息
目前只支付简单的批量新增,修改,和删除,也就是单表的,更新也只能按 id 更新数据,查询就默认是会分页的,也就是说会把分页参数也一起传给接口,怎么实现,怎么查询,这些可以自定义
注解在需要同步进行操作的方法上面,可以是Service也可以是MapperInterface的方法
接口日志记录注解
| 参数 | 类型 | 必须 | 默认 | 说明 |
|---|---|---|---|---|
| title | String | 否 | "" | 模块名 |
| description | String | 否 | "" | 模块描述 |
| type | String | 否 | OperateType.OTHER | 操作类型,这个操作类型完全可以自定义是些什么类型,也就是用来过滤区分不同类型的日志 |
| isSaveRequestData | boolean | 否 | true | 是否保存请求的参数 |
| isSaveResultData | boolean | 否 | true | 是否保存返回结果 |
接口版本控制注解
| 参数 | 类型 | 必须 | 默认 | 说明 |
|---|---|---|---|---|
| value | int | 否 | 1 | 标识接口版本号 |
由于@Cacheable注解暂时是没有可以支持单独设置某个缓存数据的缓存时长,所以才开发了这个注解
@CacheEvict、@CachePut一起使用| 参数 | 类型 | 必须 | 默认 | 说明 |
|---|---|---|---|---|
| cacheName | String | 是 | 缓存名 | |
| key | String | 是 | 缓存键 | |
| timeout | long | 否 | 60L | 超时时间 |
| timeUnit | long | 否 | TimeUnit.SECONDS | 时间单位 |
| condition | String | 否 | "" | 缓存条件 |
| unless | String | 否 | "" | 对返回结果做处理的条件 |
| removeCondition | String | 否 | "" | 删除 key 的条件 |
| updateCondition | String | 否 | "" | 更新 key 的条件 |
| updateObject | String | 否 | "" | 参数名 |
实际开发中,会经常遇到要做数据权限控制,这部分的代码是比较繁琐和臃肿的,而且容易写错,一改要改一大堆,这个注解可以帮助自动生成数据权限过滤的SQL,可以自动插入到查询语句,也可以手动选择插入到需要过滤权限的条件处
提示
数据权限有很多形式来过滤,一般情况下是以部门来过滤的,所以注解名称也就直接以dept来命名权限了
| 参数 | 类型 | 必须 | 默认 | 说明 |
|---|---|---|---|---|
| userScopeTable | String | 否 | "" | 用户关联权限的表 |
| userScopeField | String | 否 | "" | 用户在权限关联表的关联字段 |
| userScopeDeptId | String | 否 | "" | 权限关联表关联权限的字段 |
| roleScopeTable | String | 否 | "" | 按角色关联权限的权限关联表 |
| roleScopeField | String | 否 | "" | 按角色关联权限的权限关联表的角色字段 |
| roleScopeDeptId | String | 否 | "" | 按角色关联权限的权限关联表的权限字段 |
| roleTable | String | 否 | "" | 角色表 |
| roleField | String | 否 | "" | 角色主键字段 |
| roleCode | String | 否 | "" | 角色 code 字段 |
| deptTable | String | 否 | "" | 权限表 |
| deptId | String | 否 | "" | 权限主键字段 |
| deptPidAll | String | 否 | "" | 权限所有的父级的字段 |
| multiTable | String | 否 | "" | 一对多的数据权限关联的表 |
| multiFiled | String | 否 | "" | 一对多的数据权限关联的表用于关联需要过滤表的字段 |
| multiDeptId | String | 否 | "" | 一对多的数据权限关联的表用于关联权限的字段 |
| alias | String | 是 | 需要过滤数据权限的表的别名 | |
| field | String | 是 | 需要过滤数据权限的表的用来过滤的字段 | |
| sqlField | String | 否 | "data_scope" | 自动生成的数据权限过滤SQL参数名 |
| filterType | DataScopeFilterType | 否 | DataScopeFilterType.USER | 按何种方式过滤 |
| type | DataScopeType | 否 | DataScopeType.SINGLE | 数据权限类型 |
| logicDelete | boolean | 否 | false | 权限表是否是逻辑删除的 |
| logicField | String | 否 | "" | 逻辑删除字段 |
| notDeletedStatus | String | 否 | "" | 逻辑删除的未删除状态 |
| dbtype | DbType | 否 | DbType.POSTGRE_SQL | 数据库类型,com.baomidou.mybatisplus.annotation.DbType |
| includeChildren | boolean | 否 | true | 是否包含查询权限子集 |
| includeParents | boolean | 否 | false | 是否包含查询权限父集 |
| dataScopeCondition | Class<? extends DataScopeCondition> dataScopeCondition() |
否 | DefaultDataScopeCondition.class |
判断是否要进行数据权限过滤 |
| custom | Class<? extends DataScopeCustom> |
否 | DefaultDataScopeCustom.class |
自定义过滤规则 |
| notExistDealType | DataScopeGetNotDealType | 否 | DefaultDataScopeCustom.class |
自定义过滤规则 |
| auto | boolean | 否 | true | 是否自动把过滤条件添加到 where 语句后面,默认添加到第一个 where 后面 |
| extensible | boolean | 否 | false | 是否扩展 |
| extensionScopeTable | String | 否 | "" | 扩展数据范围表 |
| extensionScopeField | String | 否 | "" | 扩展数据范围表的主键(用来关联是哪个权限需要扩展范围) |
| extensionScopeDeptId | String | 否 | "" | 扩展数据范围表的关联扩展的权限的 id |
| statusFilter | boolean | 否 | false | 是否按权限表的状态过滤掉失效的权限 |
| statusField | String | 否 | "" | 权限表的状态字段 |
| enableStatus | String | 否 | "1" | 权限启用状态,默认启动状态是 1 |
前后端数据加密传输注解,有些时候,我们希望将数据以加密的形式传入到后端进行操作,但是加解密是个比较复杂的过程,所以可以使用这个注解来处理传入的加密数据
| 参数 | 类型 | 必须 | 默认 | 说明 |
|---|---|---|---|---|
| decryptInput | boolean | 否 | true | 解密输入数据 |
| key | String | 否 | "data" | 需要解密的输入数据的参数名 |
| encryptOutput | boolean | 否 | true | 是否要加密输出数据 |
| outputEncryptPublicKey | String | 否 | "rsaPublicKey" | 加密输出数据的公钥的 key,这个需要前端传 public key 过来 |
| type | EncryptedType | 否 | EncryptedType.RSA | 加密类型 |
| content | String | 否 | "content" | 加密的内容的 JSON 键 (POST 请求的时候需要从请求的 JSON 里面获取内容) |
| aesKey | String | 否 | "aesKey" | 加密的 AES Key 的 JSON 键 (POST 请求的时候需要从请求的 JSON 里面获取 AES Key) |
数据增强注解,与Encrypted不同的是:EnhanceMethod不仅仅能加解密数据,只要是有入参和出参都能进行加解密或者其他一些对数据进行修改的操作
在方法调用的时候对方法里面的输入参数和输出结果做一些处理
| 参数 | 类型 | 必须 | 默认 | 说明 |
|---|---|---|---|---|
| handler | Class<? extends IMethodEnhanceHandler>[] |
否 | {} |
处理器(bean),可以有多个处理器,按顺序处理数据 |
表操作历史记录注解,对数据库做更新操作(增,删,改)之前对数据进行备份历史
| 参数 | 类型 | 必须 | 默认 | 说明 |
|---|---|---|---|---|
| value | String | 否 | "" | 指定要记录的对象,如果不指定,默认就会拿第一个参数 |
| clazz | Class<?> |
是 | 类型,数据库对象实体类 | |
| tableName | String | 否 | "" | 表名,如果不指定就会默认根据 MybatisPlus 的注解 |
| primaryKey | String | 否 | "" | 主键名,这里默认是 id,如果找不到 id 也会根据 MybatisPlus 的注解 |
| pkTypes | int | 否 | java.sql.Types.BIGINT | 主键数据库类型 |
| operateType | int | 否 | DataOperateType.UPDATE | 操作类型 |
| dataSource | String | 否 | "" | 多数据源,数据源 |
| historyTableName | String | 否 | "sys_history_record" | 将要把历史记录保存到哪个表 |
安全转换注解(接口),过滤传进接口和从接口传出去的数据,过滤掉敏感字段,或者限制传一些字段
| 参数 | 类型 | 必须 | 默认 | 说明 |
|---|---|---|---|---|
| key | String | 否 | "" | 指定字段 |
| safeIn | Class<? extends Serializable>[] |
否 | {} |
安全输入的类 |
| safeOut | Class<? extends Serializable>[] |
否 | {} |
安全输出的类 |
| resultType | EntityType | 否 | EntityType.NONE | 返回类型 |
| ignoreIn | String[] |
否 | {} |
忽略输入的字段 |
| ignoreOut | String[] |
否 | {} |
忽略输出的字段 |