tyboot 1.1.10 发布,基于 Spring Boot 的快速开发脚手架
更新内容:
1.取消请求频次限制策略的自动加载,实例应用可手动加载。
2.新增基于接口的请求频次限制
3.使用lombok
4.扩展验证规则超时报错变更为只打印警告信息
5.BaseService方法优化
特点
1.简化基础业务开发过程 a.针对单表查询,不用写sql。列表,分页,都不用写。 b.dao层的mapper只是一个空的接口,大部分业务不需要在mapper中写任何代码(除非复杂报表查询),也不需要mapper的xml文件。 c.baseService中有大量的泛型方法以供使用,单表单对象增删改查在service层也不需要写代码,列表和分页查询也只需要一行代码。 d.提倡单表操作。不提倡使用复杂sql解决复杂的业务问题。 2.降低学习成本。新人快速上手,基础知识过关的新人,可以快速进入业务开发状态。 3.常用组件集成。redis,mq,事件,mongodb等等 4.通用业务模型的实现。开箱即用的业务模型,可以大大的缩减项目开发周期。计划实现的通用业务模型有 订单系统,虚拟账户系统,支付网关,动态表单,报表系统,通用预约系统,优惠策略定制, 基础数据(验证码,字典,内部消息,地理位置信息,通用文件信息存储,操作记录与计数,) 5.集成常用第三方系统。短信(阿里大鱼),存储(七牛,阿里OSS),支付(微信公众平台,支付宝)
项目结构
tyboot ├─tyboot-api │ ├─tyboot-api-boot 示例项目,实现了数据字典,权限管理,其他项目通用的基础功能 ├─tyboot-component------组件 │ ├─tyboot-component-activemq------集成activemq │ ├─tyboot-component-amqp----------对spring的amqp简单集成 │ ├─tyboot-component-cache---------缓存,对redis的进一步实现和封装,地理位置,管道,zset实现分页查询,分布式锁 │ ├─tyboot-component-emq-----------集成mqtt服务 EMQ │ ├─tyboot-component-event---------利用spring的事件机制实现基于rest接口的事件处理机制 │ ├─tyboot-component-mongo---------集成mongo │ ├─tyboot-component-opendata------集成常用第三方开放接口,七牛,阿里大鱼,腾讯im,极光推送 │ └─tyboot-component-validation----参数校验 ├─tyboot-core-----------核心包,一般情况下实例项目都会引用到 │ ├─tyboot-core-auth---------------用户认证,session共享 │ ├─tyboot-core-foundation---------常用工具类库,线程内上下文封装;Bean、File,列表转树结构,加密解密等等。。。。。 │ ├─tyboot-core-rdbms--------------集成mybatis,mybatisplus,简化orm和封装servic通用操作 │ └─tyboot-core-restful------------对restful风格的接口封装,集成接口文档,统一异常处理,请求拦截处理,返回数据封装,上下文封装 └─tyboot-prototype------通用业务模型,针对特定业务场景进行封装实现 ├─tyboot-prototype-account------虚拟账户系统 ├─tyboot-prototype-order--------通用订单系统 └─tyboot-prototype-trade--------简单支付渠道实现,支付宝,微信
目录约定:
示例: tyboot-api-privilege----------------以下目录为项目约定目录结构 org.typroject.api.privilege. controller-------接口目录 face.------------业务层 model--------vo orm.---------数据操作 dao------mapper接口目录 entity---po目录 service------业务实现类
约定
orm
1.entity需要继承BaseEntity 对应的数据表不能缺少通用字段 SEQUENCE_NBR bigint 20 物理主键 REC_USER_ID varchar 32 最后更新者的id REC_DATE datetime 最后更新时间 2.使用了mybatisplus,所以实例项目中不需要引入mapper.xml,baseMapper的方法足够使用。 除非要进行复杂查询,可自行引入xml文件 3.通常情况下dao层的mapper子接口只是一个空接口,除非要自己写sql,或引入了xml,才会在其中写代码。
service
1.继承baseService
public class LocationInfoService extends BaseService<LocationInfoModel,LocationInfo,LocationInfoMapper> {}
2.service中的方法不要重载,因为会只根据方法名通过反射获取方法实例。 3.示例项目中的service层没有写接口,直接使用的实现类进行操作。需要接口的自行定夺。负责业务设计时候 设计原则还是要讲究的。对于简单业务,可视情况而定。 4.单表单对象的操作可以不需要在service中写方法,也不需要引入mapper,泛型方法足够用, 分页查询和列表查询也只需要一行代码,示例如下:
-
分页:
public Page<DictionarieModel> queryDictPage(Page page, String agencyCode , String buType, String dictAlias, @Condition(Operator.like) String dictName, String dictCode) throws Exception { return this.queryForPage(page,"排序字段",false,agencyCode,buType,dictAlias,dictName,dictCode); }
作为查询条件的参数名称需要和对应model中的属性名称一致。 传入baseService.queryForPage中的params参数列表需要和前置方法(queryDictPage)的参数顺序一致, 底层会自动解析前置方法参数名称并对值判空,然后转换为数据库字段名,用于构建条件组装器。 注解@Condition用于定义条件操作符,已实现的条件操作符详见Operator,所有查询条件的逻辑关系都是与关系 目前还没打算实现或关系。
-
列表:(参数约定与分页方法相同)
public List<DictionarieModel> queryDictList(String agencyCode , String buType, String dictAlias, @Condition(Operator.like)String dictName, String dictCode) throws Exception { return this.queryForList("排序字段",false,agencyCode,buType,dictAlias,dictName,dictCode); }
controller
1.统一返回值,所有接口统一使用ResponseModel封装返回值。 2.自定义注解@TycloudOperation用来定义接口的访问级别ApiLevel,鉴权控制needAuth 3.可以设置是否返回真实http状态,或者全部返回200.
关于缓存
1.单表单对象缓存,单表列表缓存都已经集成到baseService的方法中,可以随着对象的更新刷新或删除缓存,可以查看方法备注以选择是使用。 2.其他缓存场景建议直接使用rediTemplate进行操作 3.tyboot-component-cache模块提供了基于redis Zset分页查询;地理位置计算和查询;redis管道的使用
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
javawww6662016com语言开发中的I8O883559II内部排序机制
IT行业一直都是高薪的行业,高薪行业也是大家都向往的行业,高薪就意味着有高的挑战。很多的学员在学习java的时候都是不知道java语言中的内部排序机制是怎么排序的。然后在学习的过程中就会有很多的问题出现,下面鸥鹏讲师就给大家讲解下java语言中的内部排序机制是怎么排序的。 数组的操作可以使用java提供的工具类Arrays,其中Arrays.sort()方法用于数组的排序。 基本数据类型数组的操作,使用经过优化的快速排序算法 当数组的规模较小时,直接插入排序的比较次数并不会比快排或者归并多多少,其效率反而不如简单排序算法,所以在数组规模小于7时,使用直接插入排序, 当数组规模较大时,合理的选择快排的枢轴元素,如在规模小于40时,在数组的首,中,尾三个位置上的数,取中间大小的数做枢轴;在数组规模大于40时,从数组中取位置均匀分布的9个数,然后每三个数一组取中间数,最后三个中间数再取中间数。确定枢轴后,与数组的第一个元素交换,之后的快排与普通快排一样。 当数组中有大量重复元素时,选择重复元素作为枢轴,然后两个端各设置两个工作指针low、high,left、right用于始终指向要交换的元素...
- 下一篇
MooTool 1.0.0 发布,开发者常备桌面小工具
MooTool 1.0.0已发布,开发者常备桌面小工具。 MooTool A handy desktop toolset for developers. 开发者常备桌面小工具 支持的功能 Host切换 时间转换 Json格式化 发送HTTP请求 编码转换 二维码生成/二维码识别 加解密/随机 随手记 计划中支持的功能 正则表达式 Cron表达式 图片压缩 功能&亮点 整合开发者使用频率比较高的工具 随手记:可记录待办事项、需求点、代码片段、常用SQL、常用数据暂存、关键log保存、常用接口保存等 时间戳:时间戳和高可读性本地时间的相互转换,对网上常见的转换页重新设计,支持快速复制,简单高效 Json格式化:目前仅支持json串的美化,暂不支持分节点展开和收起 Host切换:自动获取系统host文件修改权限,支持系统托盘快速切换 Http请求:支持GET、POST、PUT、DELETE等常用请求方式,支持参数、header、cookie、body等 编码转换:支持常用编码转换 二维码生成:支持自定义尺寸、纠错级别、logo图片 …… 下载地址: https://gitee.com...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8编译安装MySQL8.0.19
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS关闭SELinux安全模块
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Red5直播服务器,属于Java语言的直播服务器