0. 技术概述
一般而言,java项目一般都会有controller、service和Dao层,根据业务复杂度加大,service层我们又可以细分为复杂业务层(facade层,将多个简单业务组合成复杂业务功能)和基础业务层(biz层,提供单一基础业务实现)。general- biz技术就是面向基础业务层,提供的统一解决方案。
general-biz技术底层依赖通用mapper,所以仅适用于Dao层使用mybatis的项目体系。
1. 技术目标
简化biz层基础业务开发,实现单表基础业务代码简洁易读,通过注解方式实现基础业务实现类托管,项目启动时动态生成,和动态加载到spring容器中。
2. 下载地址
1)general-biz开源技术Git下载地址
_https://gitee.com/sharelords/general- biz.git_
2)测试案例Git下载地址
_https://gitee.com/sharelords/demo.git_
测试案例使用详见改地址目录下的《测试案例使用教程》文件。
3. 配置方式
1)所有使用到general-biz技术的biz接口(例如demo- biz中的DemoTestRoleBiz和DemoTestBiz接口)都必须继承Biz接口。
Biz接口有四个泛型参数>:
Bo —— 基础业务模型(用于业务数据输出,可与Entity相同)
Entity —— 数据模型(用于Dao层数据交互)
D —— 主键对应的java类型
Dao —— 数据交互接口(需继承通用mapper的Mapper接口)
例如:
2)路径扫描
Springboot项目建议采用 @BizScan 注解式配置biz扫描路径。
或
也可在spring的xml配置文件中配置bean,引入BizScannerConfigurer。
3)参数说明:
有以下三个参数:
basePackages:要扫描的biz接口路径
deleteJavaFile:是否删除生成的java实现类源文件,默认删除(true),可不配置
srcFilePath:java实现类源文件保存路径,默认存放在项目同级目录下,自动生成的bizTempJavaFile文件夹内,可不配置。
4. 默认内置的多个方法说明
Biz基础业务接口继承general-biz中的Biz接口,则具备了以下方法:
1)新增(保存所有字段)
Integer save(T var1);
2)新增(仅保存非null字段)
Integer saveSelective(T var1);
3)更新(更新所有字段)
Integer update(T var1);
4)更新(更新非null参数)
Integer updateSelective(T var1);
5)根据主键id物理删除
Integer deletePhysically(D var1);
6)根据主键查询
T queryByPrimaryKey(D var1);
7)根据业务模型中非null参数多条件查询
List queryByBo(T var1);
8)查询所有
List queryAll();
9)根据主键id批量查询
List queryReCordsByIdList(List var1);
10)根据业务模型中非null参数查询数量
Integer queryCountByBo(T var1);
5. 自定义biz接口说明
暂时只支持自定义的查询,自定义biz接口内的方法需以queryBy、queryOneBy、queryPageBy、queryCountBy其中一个开头开头,否则抛出异常提醒。
除了分页的Page对象,最多只能出现一个自定义对象,各裸露的参数需以@Prop注解声明属性名称(属性名称必须和Entity数据模型中的字段属性名相同),自定义对象的field如果没有@Prop声明,默认与field名称相同。
继承Biz的接口不能写实现类。
自定义对象:
Biz接口自定义方法:
6. general-biz注解说明:
所在路径:com.sharelords.biz.annotation
1)check包:参数检查,默认不检查
CHKBlank:参数校验注解,检查是否为空(包括null和空值)
2)param包:参数属性包
Prop:参数名(条件属性名称)
3)global包:全局控制包,作用于方法
QueryAllWhileParamAllSkip:条件注解,当所有查询条件都跳过时,使用该注解, 展示所有记录。
4)join包:条件连接方式,默认以and(并且)连接
Or:条件连接注解,或
5)sort包:排序包
Sort:排序注解,作用于方法上,value指定数据库字段名和排序规则
6)skip包:条件空跳过包
NullSkip:条件注解,参数为null,不进行条件组装
BlankSkip:条件注解,参数为空(null或者”“),不进行条件组装
7)value包:条件值比较包。默认equal(等于),同类型注解只能出现一个
Gt:条件注解,大于
GtEqual:条件注解,大于等于
Lt:条件注解,小于
LtEqual:条件注解,小于等于
NotEqual:条件注解,不等于
In:条件注解,value在某个集合中
Like:条件注解,模糊匹配–像(默认左右侧均以%连接)
NotLike:条件注解,模糊匹配–不像(默认左右侧均以%连接)
8)extra包:参数条件额外的包(条件为null、空相关),同类型注解只能出现一个,method路径下可多个注解配合使用
NullOr:条件注解,null或者参数值
NotNullAnd:条件注解,非null并且参数值
EmptyOr:条件注解,null或无值或者参数值
NotEmptyAnd:条件注解,非空并且参数值
method路径下:
NotNull:条件注解,数组,非null(该注解存在时,对应名称参数值失效)
NotEmpty:条件注解,数组,非空(该注解存在时,对应名称参数值失效)