# topfox
**Repository Path**: luchao111/topfox
## Basic Information
- **Project Name**: topfox
- **Description**: 在 srpingboot2.x.x 和MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 7
- **Created**: 2019-07-21
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 1. 目录
- [快速使用](https://gitee.com/topfox/topfox/blob/dev/guide/explain-sample.md)
- [常见问题](https://gitee.com/topfox/topfox/blob/dev/guide/explain-question.md)
- [TopFox配置参数](https://gitee.com/topfox/topfox/blob/dev/guide/explain-configuration.md)
- [上下文对象](https://gitee.com/topfox/topfox/blob/dev/guide/explain-tools.md)
- [核心使用](https://gitee.com/topfox/topfox/blob/dev/guide/explain-core.md)
- [条件匹配器](https://gitee.com/topfox/topfox/blob/dev/guide/explain-condition.md)
- [实体查询构造器](https://gitee.com/topfox/topfox/blob/dev/guide/explain-entityselect.md)
- [流水号生成器](https://gitee.com/topfox/topfox/blob/dev/guide/explain-keybuild.md)
- [数据校验组件](https://gitee.com/topfox/topfox/blob/dev/guide/explain-checkdata.md)
- [更新日志组件](https://gitee.com/topfox/topfox/blob/dev/guide/explain-updatelog.md)
- [自动填充组件](https://gitee.com/topfox/topfox/blob/dev/guide/explain-filldata.md)
- [Response 返回结果对象](https://gitee.com/topfox/topfox/blob/dev/guide/explain-response.md)
## 1.1. 必备
- 文中涉及的例子源码网址: https://gitee.com/topfox/topfox-sample
- TopFox技术交流群 QQ: 874732179
## 1.2. topfox 介绍
在 srpingboot2.x.x 和MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
编程规范参考《阿里巴巴Java开发手册》
借鉴mybaties plus部分思想
特性:
- **无侵入**:只做增强不做改变,引入它不会对现有工程产生影响
- **损耗小**:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作
- **集成Redis缓存**: 自带Redis缓存功能, 支持多主键模式, 自定义redis-key. 实现对数据库的所有操作, 自动更新到Redis, 而不需要你自己写任何代码; 当然也可以针对某个表关闭.
- **强大的 CRUD 操作**:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求
- **支持 Lambda 形式调用**:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错
- **支持主键自动生成**:可自由配置,充分利用Redis提高性能, 完美解决主键问题. 支持多主键查询、修改等
- **内置分页实现**:基于 MyBatis 物理分页,开发者无需关心具体操作,写分页等同于普通查询
- **支持devtools/jrebel热部署**
- **热加载** 支持在不使用devtools/jrebel的情况下, 热加载 mybatis的mapper文件
- 内置全局、局部拦截插件:提供delete、update 自定义拦截功能
- **拥有预防Sql注入攻击功能**
- **无缝支持spring cloud**: 后续提供分布式调用的例子
## 1.3. topfox 使用
> 推荐上传到自有的maven-nexus服, 然后在业务项目进行以下依赖
```
com.topfox
topfox
1.2.1
pom
import
```
# 2. 更新日志
## 2.1. 版本1.2.1 更新日志 2019-07-18
请参考 << TopFox配置参数 >>中的描述, 增加配置3个参数 :
- top.service.update-not-result-error
- top.service.select-by-before-update
- top.service.redis-log
dto增加 addNullfields 方法, 请参考 <<常见问题>> 章节中的 "如何将指定字段的值更新为null"
SimpleService.setFillDataHandler 方法作废. 不需要写代码, 会自动注入 填充对象FillDataHandler的实现类.
增加填充组件 FillDataHandler的文档, DataDTO void方法改为返回自身, DataDTO增加setValue方法, 可以对指定的字段赋值
## 2.2. 版本1.2.0 更新日志
- updateBatch 方法的返回值 由int 改为 List< DTO >
- BaseDao 作废删除, 增加 BaseMapper< DTO extends DataDTO > 代替
- AdvancedService< QTO extends DataQTO, DTO extends DataDTO > 改为
AdvancedService< M extends BaseMapper< DTO >, DTO extends DataDTO >
- SimpleService 中 方法 setBaseDao 删除. 已经定义 baseMapper , 可访问开发者自定义Dao的方法
## 2.3. 版本1.1.0 更新日志
### 2.3.1. 上下文对象
- 在以后的版本中将删除 com.topfox.common.ApplicationContextProvider
- 新增加 上下文对象 com.topfox.common.AppContaxt,静态方法如下:
```
getBean(Class clazz)
getBean(String name,Class clazz)
getRestSessionHandler()
getAbstractRestSession()
getSysConfig()
environment()
```
### 2.3.2. SimpleService 进行了改造和优化
新增方法
```
List selectBatch(DataQTO qto)
Response> selectPage(EntitySelect entitySelect)
Response>> selectPageForMap(EntitySelect entitySelect)
List selectBatch(DataQTO qto)
Response> listPage(EntitySelect entitySelect)
List listObjects(EntitySelect entitySelect)
```
### 2.3.3. EntitySelect 和DataQTO
EntitySelect 和 DataQTO 对 orderBy groupBy having 分页的支持
### 2.3.4. ResponseCode 增加了多个 异常编码 保证 Topxfox抛出异常 的编码唯一性