<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ## 代碼生成 BeetlSQL提供了彈性的代碼生機制,可以根據數據庫的定義生成java代碼,文檔,業務代碼,BeetlSQL自身提供了一套生成模板,用戶可以復用或者修改這些模板,或者提供新的模板,比如生成Controller代碼 `SourceConfig`是核心類,接收參數SQLManager以及一組SourceBuilder,前者用于獲取metadata,后者是具體執行生成過程 ```java public SourceConfig(SQLManager sqlManager,List<SourceBuilder> sourceBuilder) { this(sqlManager,false); this.sourceBuilder = sourceBuilder; } public void gen(String tableName, BaseProject project){} public void genAll(BaseProject project, SourceFilter sourceFilter){} ``` gen或者genAll方法用于開始執行,每個tableName都會傳遞給sourceBuilder集合,一次運行 SourceBuilder 需要實現如下方法,執行具體的生成動作 ```java public abstract void generate(BaseProject project, SourceConfig config,Entity entity); ``` 參數BaseProject提供了生成的基本信息,比如BaseProject的子類ConsoleOnlyProject,會提供一個基于System.out的輸出流,因此生成的代碼都打印在控制臺,而SimpleMavenProject 則提供一個文件路徑,代碼會按照包名保存到相應的工程文件里 Entity 對象則是目標表或者視圖的描述,包含了java屬性,類型,數據庫的列名,類型,備注等信息,足夠生成一個java類 用戶通常需要完成SourceBuilder來實現代碼生成,生成到文件,控制臺,還是其他地方則是通過BaseProject決定 如下是一個根據表生成數據庫表的描述文檔 ```java public class MDDocBuilder extends BaseTemplateSourceBuilder { public static String mapperTemplate="doc.btl.md"; public MDDocBuilder() { super("doc"); } @Override public void generate(BaseProject project, SourceConfig config, Entity entity) { //BeetlSQl中的配置 Beetl beetl = ((BeetlTemplateEngine)config.getSqlManager().getSqlTemplateEngine()).getBeetl(); //模板 Template template = groupTemplate.getTemplate(mapperTemplate); template.binding("tableName", entity.getTableName()); template.binding("comment", entity.getComment()); template.binding("colsMap", entity.getTableDesc().getColsDetail()); template.binding("table", entity.getTableDesc()); String mdFileName = StringKit.toLowerCaseFirstOne(entity.getName())+".doc..md"; Writer writer = project.getWriterByName(this.name,mdFileName); template.renderTo(writer); } ``` 對應的模板doc.btl.md 如下 ```markdown ## ${tableName} **說明** ${isEmpty(comment)?"無注釋":comment} **表信息** <% var ids = table.idNames; %> * 主鍵 ${ids} * 表注釋 | 名稱 | 數據類型 | 長度 | 說明 | | :--: | :--- | :------: | :----: | <% for(col in colsMap){ var name = col.key; if(@ids.contains(name)){ name="*"+name; } var detail = col.value; var dbType =@org.beetl.sql.clazz.kit.JavaType.jdbcTypeId2Names.get(detail.sqlType); %> |${name} | ${dbType}| ${detail.size} | ${detail.remark} | <%}%> ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看