1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        tyboot基于 Spring Boot 的快速開發(fā)腳手架

        聯(lián)合創(chuàng)作 · 2023-09-20 03:28

        tyboot

        介紹

        tyboot是一個基于springboot的服務(wù)端腳手架,面向單體服務(wù)快速開發(fā),需要微服務(wù)方案的可以看另一個項目tycloud(還在完善中)

        特點

        1.簡化基礎(chǔ)業(yè)務(wù)開發(fā)過程
            a.針對單表查詢,不用寫sql。列表,分頁,都不用寫。
            b.dao層的mapper只是一個空的接口,大部分業(yè)務(wù)不需要在mapper中寫任何代碼(除非復(fù)雜報表查詢),也不需要mapper的xml文件。
            c.baseService中有大量的泛型方法以供使用,單表單對象增刪改查在service層也不需要寫代碼,列表和分頁查詢也只需要一行代碼。
            d.提倡單表操作。不提倡使用復(fù)雜sql解決復(fù)雜的業(yè)務(wù)問題。
        2.降低學(xué)習(xí)成本。新人快速上手,基礎(chǔ)知識過關(guān)的新人,可以快速進入業(yè)務(wù)開發(fā)狀態(tài)。
        3.常用組件集成。redis,mq,事件,mongodb等等
        4.通用業(yè)務(wù)模型的實現(xiàn)。開箱即用的業(yè)務(wù)模型,可以大大的縮減項目開發(fā)周期。計劃實現(xiàn)的通用業(yè)務(wù)模型有
          訂單系統(tǒng),虛擬賬戶系統(tǒng),支付網(wǎng)關(guān),動態(tài)表單,報表系統(tǒng),通用預(yù)約系統(tǒng),優(yōu)惠策略定制,
          基礎(chǔ)數(shù)據(jù)(驗證碼,字典,內(nèi)部消息,地理位置信息,通用文件信息存儲,操作記錄與計數(shù),)
        5.集成常用第三方系統(tǒng)。短信(阿里大魚),存儲(七牛,阿里OSS),支付(微信公眾平臺,支付寶)

        技術(shù)棧

         1. SpringBoot 2.1.6.RELEASE
         2. MyBatis-Plus 3.x
         3. mybatis-spring-boot-starter 1.2.0
         5. Kaptcha 2.3.2
         6. jackson-databind 2.9.7
         7. springfox-swagger2 2.2.2
         8. HikariCP 2.7.9

        項目結(jié)構(gòu)

         tyboot 
          ├─tyboot-api
          │  ├─tyboot-api-boot                示例項目,實現(xiàn)了數(shù)據(jù)字典,權(quán)限管理,其他項目通用的基礎(chǔ)功能
          ├─tyboot-component------組件
          │  ├─tyboot-component-activemq------集成activemq
          │  ├─tyboot-component-amqp----------對spring的amqp簡單集成
          │  ├─tyboot-component-cache---------緩存,對redis的進一步實現(xiàn)和封裝,地理位置,管道,zset實現(xiàn)分頁查詢,分布式鎖
          │  ├─tyboot-component-emq-----------集成mqtt服務(wù) EMQ
          │  ├─tyboot-component-event---------利用spring的事件機制實現(xiàn)基于rest接口的事件處理機制
          │  ├─tyboot-component-mongo---------集成mongo
          │  ├─tyboot-component-opendata------集成常用第三方開放接口,七牛,阿里大魚,騰訊im,極光推送
          │  └─tyboot-component-validation----參數(shù)校驗
          ├─tyboot-core-----------核心包,一般情況下實例項目都會引用到
          │  ├─tyboot-core-auth---------------用戶認證,session共享
          │  ├─tyboot-core-foundation---------常用工具類庫,線程內(nèi)上下文封裝;Bean、File,列表轉(zhuǎn)樹結(jié)構(gòu),加密解密等等。。。。。
          │  ├─tyboot-core-rdbms--------------集成mybatis,mybatisplus,簡化orm和封裝servic通用操作
          │  └─tyboot-core-restful------------對restful風(fēng)格的接口封裝,集成接口文檔,統(tǒng)一異常處理,請求攔截處理,返回數(shù)據(jù)封裝,上下文封裝
          └─tyboot-prototype------通用業(yè)務(wù)模型,針對特定業(yè)務(wù)場景進行封裝實現(xiàn)
              ├─tyboot-prototype-account------虛擬賬戶系統(tǒng)
              ├─tyboot-prototype-order--------通用訂單系統(tǒng)
              └─tyboot-prototype-trade--------簡單支付渠道實現(xiàn),支付寶,微信
         	    

        目錄約定:

        示例:
        tyboot-api-privilege----------------以下目錄為項目約定目錄結(jié)構(gòu)
          	    org.typroject.api.privilege.
          	                            controller-------接口目錄 
          	                            face.------------業(yè)務(wù)層
          	                                model--------vo
          	                                orm.---------數(shù)據(jù)操作
          	                                    dao------mapper接口目錄
          	                                    entity---po目錄
          	                                service------業(yè)務(wù)實現(xiàn)類

        約定

        orm

        1.entity需要繼承BaseEntity
            對應(yīng)的數(shù)據(jù)表不能缺少通用字段
         
             SEQUENCE_NBR    bigint	20    物理主鍵
             REC_USER_ID    varchar	32    最后更新者的id
             REC_DATE    datetime        最后更新時間
             
        2.使用了mybatisplus,所以實例項目中不需要引入mapper.xml,baseMapper的方法足夠使用。
          除非要進行復(fù)雜查詢,可自行引入xml文件 
        3.通常情況下dao層的mapper子接口只是一個空接口,除非要自己寫sql,或引入了xml,才會在其中寫代碼。

        service

        1.繼承baseService
          public class LocationInfoService extends BaseService<LocationInfoModel,LocationInfo,LocationInfoMapper> 
          {}
        2.service中的方法不要重載,因為會只根據(jù)方法名通過反射獲取方法實例。
        3.service層只有實現(xiàn)類,拋棄了以前接口,覺得麻煩。
        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);
                    }
              作為查詢條件的參數(shù)名稱需要和對應(yīng)model中的屬性名稱一致。
              傳入baseService.queryForPage中的params參數(shù)列表需要和前置方法(queryDictPage)的參數(shù)順序一致,
              底層會自動解析前置方法參數(shù)名稱并對值判空,然后轉(zhuǎn)換為數(shù)據(jù)庫字段名,用于構(gòu)建條件組裝器。
              注解@Condition用于定義條件操作符,已實現(xiàn)的條件操作符詳見Operator,所有查詢條件的邏輯關(guān)系都是與關(guān)系
              目前還沒打算實現(xiàn)或關(guān)系。         
        • 列表:(參數(shù)約定與分頁方法相同)
              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.統(tǒng)一返回值,所有接口統(tǒng)一使用ResponseModel封裝返回值。
        2.自定義注解@TycloudOperation用來定義接口的訪問級別ApiLevel,鑒權(quán)控制needAuth

        關(guān)于緩存

        1.單表單對象緩存,單表列表緩存都已經(jīng)集成到baseService的方法中,可以隨著對象的更新刷新或刪除緩存,可以查看方法備注以選擇是使用。
        2.其他緩存場景建議直接使用rediTemplate進行操作
        3.tyboot-component-cache模塊提供了基于redis Zset分頁查詢;地理位置計算和查詢;redis管道的使用

        代碼生成器的使用

        1.使用mybatisplus提供的代碼生成器,詳見示例項目。

        最佳實踐

        1.將tyboot-core和tyboot-component中的組件包打包發(fā)布到maven私服nexus中統(tǒng)一管理,
          然后各個實例項目引用后進行業(yè)務(wù)項目的開發(fā),這樣實例項目的業(yè)務(wù)代碼會更加清晰,打包速度更快,可以隨時升級所引用的tyboot版本。

        后續(xù)計劃

        1.完善基礎(chǔ)模塊
        3.完善通用業(yè)務(wù)模型
        4.集成web端
        瀏覽 25
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        編輯 分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        編輯 分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            日韩精品电影 | 国产日本三级 | 国产成人一二三 | 韩国黄大片 | 娇妻互换享受高潮嗷嗷叫口述 | 一起操网址 | 欧美 亚洲 日韩 国产 | 日产久久视频 | 91久久国语露脸精品国产高跟 | 26uuu色噜噜精品一区二区 |