<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

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

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

          tyboot

          介紹

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

          特點(diǎn)

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

          技術(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

          項(xiàng)目結(jié)構(gòu)

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

          目錄約定:

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

          約定

          orm

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

          service

          1.繼承baseService
            public class LocationInfoService extends BaseService<LocationInfoModel,LocationInfo,LocationInfoMapper> 
            {}
          2.service中的方法不要重載,因?yàn)闀?huì)只根據(jù)方法名通過(guò)反射獲取方法實(shí)例。
          3.service層只有實(shí)現(xiàn)類(lèi),拋棄了以前接口,覺(jué)得麻煩。
          4.單表單對(duì)象的操作可以不需要在service中寫(xiě)方法,也不需要引入mapper,泛型方法足夠用,
            分頁(yè)查詢(xún)和列表查詢(xún)也只需要一行代碼,示例如下:
          • 分頁(yè):
                  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);
                      }
                作為查詢(xún)條件的參數(shù)名稱(chēng)需要和對(duì)應(yīng)model中的屬性名稱(chēng)一致。
                傳入baseService.queryForPage中的params參數(shù)列表需要和前置方法(queryDictPage)的參數(shù)順序一致,
                底層會(huì)自動(dòng)解析前置方法參數(shù)名稱(chēng)并對(duì)值判空,然后轉(zhuǎn)換為數(shù)據(jù)庫(kù)字段名,用于構(gòu)建條件組裝器。
                注解@Condition用于定義條件操作符,已實(shí)現(xiàn)的條件操作符詳見(jiàn)Operator,所有查詢(xún)條件的邏輯關(guān)系都是與關(guān)系
                目前還沒(méi)打算實(shí)現(xiàn)或關(guān)系。         
          • 列表:(參數(shù)約定與分頁(yè)方法相同)
                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用來(lái)定義接口的訪(fǎng)問(wèn)級(jí)別ApiLevel,鑒權(quán)控制needAuth

          關(guān)于緩存

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

          代碼生成器的使用

          1.使用mybatisplus提供的代碼生成器,詳見(jiàn)示例項(xiàng)目。

          最佳實(shí)踐

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

          后續(xù)計(jì)劃

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

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产成人综合视频 | 无码人妻精品一区二区蜜桃漫画 | 大香蕉婷婷国产 | 国产精品美女被操视频 | 亚洲黄色精品 |