• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

SpringAS: 更专注于业务层及复杂SQL的开发的Spring boot框架

原作者: [db:作者] 来自: 网络 收藏 邀请

spring A.S

更专注于业务层及复杂SQL的开发的Spring boot框架
  • 融合graphql的理念,不必再为修改几个字段就大费周章重新部署
  • 现在对于这些,你只需前端入参便可一步到位,极大程度减少后台代码业务量,将重复性无意义的包袱通通甩掉
  • SQL引擎简化业务层开发所需时间,提升业务开发效率
  • 全项目架构简洁轻便,提升代码开发效率

A.S入门-如何运行我的Spring-A.S项目?

  • 准备pdm数据文件(框架会提供一个test.pdm文件供您测试使用,后期就需要您自行准备了哦)
  • 运行test.generate.generateTest文件生成对应的config/dao及sql文件
    • 将生成的BaseTableCfg.java文件复制粘贴至src.main.java.com.prism.springas.utils文件目录下(您也可以将已有的文件增加.bat后缀留做备份文件)
    • 将生成的BaseDao.java文件复制粘贴至src.main.java.com.prism.springas.dao文件目录下(您也可以将已有的文件增加.bat后缀留做备份文件)
    • 将生成的可执行sql文件打开后复制语句在sql工具内执行查询创建库表
  • 打开src.main.resource.application.yml文件修改对应的数据库连接配置信息
  • 打开src.main.java.SpringasApplication.java文件,右键运行
  • 启动成功! 恭喜您,您已经完成了Spring A.S的前期准备工作流程 ~

A.S进阶-Spring-A.S使用手册

  • api层:底层数据交换映射层,主要与DAO层做数据交互
    • impl:BaseApi的实现类,初步封装了简单的数据逻辑,以简化schema业务层的调用
    • tools:BaseApi核心配置类以及DAO层映射核心代码
  • controller层:前台与后台数据交换层(对外数据交互接口层),主要与schema层做数据交互
    • config:controller核心配置类/schema层映射核心代码及sqlEngine对前台JSON数据的校验及处理
  • dao层:mapper层,Mybatis数据交互层
    • BaseDAO:通过test.generate.generateTest执行后的源生DAO.java文件
    • exPand :拓展dao包
      • xxExDAO:BaseDAO(源生DAO)无法实现的复杂逻辑SQL
      • 拓展DAO层命名规范:xxx(业务名称)+ExDAO【不强制,仅做建议】
  • schema层:核心业务逻辑处理层,主要从API层获取数据并为Controller层提供数据
    • BaseSchema:基础业务逻辑层(核心业务类)
    • exPand :拓展schema包
      • xxExSchema:BaseSchema(源生DAO)无法实现的复杂业务逻辑
      • 拓展Schema层命名规范:xxx(业务名称)+ExSchema【不强制,仅做建议】
  • tools层:插件工具层(--目前只有比较简单的tools插件,后期版本会以拓展包形式发布提供给您使用,敬请关注。)
  • utils层:核心工具层,为框架提供核心工具类
    • cache:缓存工具类(目前相对简陋一些,仅以支持框架为基础)
    • pdmHelper:pdm-核心代码生成工具类
    • sqlEngine:*框架核心SQL引擎工具类
    • BaseCoreCfg:拓展DAO及Schema核心配置类(Ver1.1会优化为注解实现,进一步提升开发效率,相关更新敬请关注!)
    • BasePage:*核心实体映射类
    • BaseTableCfg:**pdm生成工具生成的核心源生表配置类(sqlEngine相关连表表名信息查询及表全查询字段功能)
    • BasicConfigUtil:yml配置中的全局配参字段
  • SpringasApplication:spring boot框架启动类

Spring A.S注意事项及常见问题

  • 我应该如何配置我的拓展dao和schema业务类?
    • ver1.0版本请您打开com.prism.springas.util.BaseCoreCfg
    • 1.将您的拓展DAO及Schema通过@Autowired自动注入
    • 2.在parseRefObject方法中配置您的拓展类名称(*唯一标识)
    • 具体代码详参com.prism.springas.util.BaseCoreCfg给出的测试用例
  • sqlEngine应该如何使用和配置?
    • 您可以打开src.test.java.com.prism.springas路径,下面的3个测试类将通过实际代码为您演示sqlEngine的使用
    • apiTests:API层接口测试
    • schemaTests:SCHEMA层接口(方法)测试
    • testThreadJunit:针对schema层在多线程下的更新及查询接口(方法)测试
  • pdm数据字段规范?
    • 为了您的正常使用,建议您在设计表名及字段时使用大写英文字母(*由pdm生成的所有相关配置均为大写)
    • 表内核心字段:
      • ID:主键,varchar(128),请注意勾选pk选项,否则生成代码时会报错(*A.S全部主键均为UUID,还请注意)*核心字段!
      • VERSION:数据版本号,int,必须要有的字段,*乐观锁核心匹配字段!
      • CREATETIME:数据生成时间(首次创建时间),datetime,可选字段
      • DATATIME:数据最后更新时间,datetime,可选字段
      • ISDELETE:数据软删除状态,int,可选字段(如果您用到了数据软删除,建议您在设计表时加上该字段)

sqlEngine(ver 1.0)-SQL引擎使用说明(Schema业务逻辑层)

  • SELECT相关方法
    • getSelById(String id):根据ID检索数据的匹配条件
    • getSelTable(String tables):需要查询的数据表(支持多表,多个间以','隔开)
      • 注意:连表表名需要从BaseTableCfg获取,*且对应关联表必须在(如://=对应关联表:SPORTSINFO,TEACHERINFO,TYPEINFO0)中!
      • 等效于: select * from a a left join b on a.id = b.id
    • getSelCols(String tables):指定需要查询的数据字段(多个间以','隔开)
      • tables-查询符合入参值的数据表全字段
      • 等效于:select a.* from a
    • getSelCols(String tables,String cols):指定需要查询的数据字段(多个间以','隔开)
      • tables-查询符合入参值的数据表全字段
      • cols-查询符合入参值的字段,数据格式为 table_colname(数据表名_数据列名) / table_colname#alias(数据表名_数据列名#别名)
      • 等效于: select a.*,b.name AS 'bname' from a a left join b on a.id = b.id
    • getPage(Integer pageNo,Integer pageSize):数据分页
      • pageNo:当前第X页
      • pageSize:每页Y条
      • 等效于:select * from a where 1=1 limit x,y
    • getSort(String keys,String sortTypes):执行数据排序(多个间以','隔开)
      • keys:需要执行排序的字段
      • sortTypes:需要的排序类型,*sortTypes值需要与keys值一一对应
        • sortTypes允许的参数如下:
          • 0 : 正常倒叙排序 order by a DESC
          • 1 : 根据汉语拼音正序排序 order by CONVERT(a) USING GBK ASC
          • 2 : 正常正叙排序 order by ASC
          • 3 : 根据汉语拼音倒叙排序 order by CONVERT(a) USING GBK DESC
    • getWhereAnd(String key,String condition,Object val)/getWhereOr(String key,String condition,Object val):数据查询条件(and/or)
      • key:执行查询的数据字段,格式为:table_Cols(表名_列名)
      • condition:参数匹配条件(sqlEngineEnum)
        • EQ:等于
        • LIKE:模糊查询(使用时需要自行指定模糊查询条件,如'%老刘')
        • GT:大于
        • GTEQ:大于等于
        • LT:小于
        • LTEQ:小于等于
        • NEQ:不等于
        • NOTIN:不包含于(使用时,多个值需要以','隔开,如'1,2,3,4'..)
        • IN:包含于(使用时,多个值需要以','隔开,如'1,2,3,4'..)
        • ISNULL:为空(使用时,val入参为"n"即可)
        • NOTNULL:不为空(使用时,val入参为"n"即可)
        • BET:在a...b区间(使用时,val入参格式如下:'08:00:00**,**09:00:00',等效于查询8点-9点内产生的数据)
      • val:对应数据查段查询值(请严格参照上述表格格式进行入参,否则数据不会正常返回(报错))
    • getCount():计算数据总条数(total值)
  • DELETE相关方法
    • getDelTables(String tables):需要执行删除的数据表
    • getDeleteById(String id):以ID主键作为删除条件执行删除
    • getNeedDelTable(String tables):指定需要删除的数据表(多表复合删除专属方法)
    • 同样的,DELETE如果需要根据指定条件批量删除数据时,可以使用getWhereAnd/getWhereOr来指定删除条件^_^
    • 请注意一点:getWhereAnd/getWhereOr与getDeleteById并不共存,sqlEngine会以最后的调用的方法为最终标准执行!
  • INSERT相关方法
    • getAddData(String key,Object val):需要入库的字段及其对应值
      • key:入库字段(直接使用列名即可,如NAME,ID等)
      • val:入库值
  • UPDATE相关方法
    • getUpdateTables(String tables):需要执行更新的数据主表
    • getUpdateCols(String colKey,Object colValue):需要执行更新的字段及字段值
      • colKey:需要执行更新的字段
      • colValue:需要执行更新的字段值
    • getUpdateWhereAnd(String key,String condition,Object val)/getUpdateWhereOr(String key,String condition,Object val):数据更新条件(and/or)
      • 具体使用可参考getWhereAnd/getWhereOr
    • getUpdCurrentVersion(String tableName,Integer value):数据版本验证/需要配合getUpdateById使用(*不适用于批量更新)
      • tableName:需要执行校验的数据表表名
      • value:当前数据版本
    • getUpdateById(String id):需要执行更新的数据主键ID
  • FETCH批量录入相关方法
    • getAddFetchCols(String cols):需要执行批量录入的数据列(ID/ISDELETE/VERSION/CREATETIME/DATETIME除外),多个列名间以','隔开
    • getAddFetchVals(List<BasePage fetchList):需要执行批量录入的数据值List

开发进度(版本更新日志)Version 0.X: 更新时间:2018-03-28

版本功能:

  • PDM自生成相关代码
  • 完成了A.S框架的底层初步搭建

Version 1.0: 更新时间:2019-01-08

版本功能:

  • 优化PDM自生成相关代码
  • SQL引擎提出,进一步简化开发逻辑(*现版本仅支持Mysql数据库)
  • 优化异常抛出,更加精准定位exception异常点位,提升bug修复及代码维护的效率
  • 进一步提升了SQL引擎的数据安全性(2019-01-09)

PS如果您有什么好的建议和意见可以直接评论给我,感谢您的支持~Ver 2.0预计更新时间为1月16日~


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap