<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>

          自動生成實體類,哪個最佳?

          共 3075字,需瀏覽 7分鐘

           ·

          2022-04-27 23:49

          看過松哥視頻的小伙伴都知道,我個人習慣用一個名叫 MyBatis Generator 的逆向工具,利用這個工具我們自動生成實體類和 mapper 接口以及對應(yīng)的 xml 文件,MyBatis Generator 是一個獨立工具,你可以下載它的 jar 包來運行、也可以在 Ant 或者 maven 中配置插件運行。

          大家在公眾號后臺回復(fù) mybatis-gen 有這個工具的下載鏈接。

          雖然我一直用這個工具,但是總感覺它太有年代感了,用久了有點膩。所以很多時候看到公眾號里有人推薦其他的 MyBatis 逆向工具,我也都會去試一試,特別是一些 IDEA 中的插件。

          這些插件我目前裝了幾個開源免費的,不過都不怎么好用,而且?guī)缀醵加?BUG。不過這塊也有一些是付費的插件,付費的應(yīng)該會好用一些,不過我沒怎么試過,畢竟這并不是剛需。

          去年我還自己開發(fā)了一個工具,手把手教大家完成一個自己的 MyBatis 逆向工具,還錄了一個配套視頻:

          • https://www.bilibili.com/video/BV1Vo4y1Z7af

          項目地址:

          • https://github.com/lenve/generate_code

          除了這些工具之外,我最近用的比較多的是一個 MyBatis-Plus 提供的,也是非常方便,如果你項目中用到了 MyBatis-Plus,那么這個工具還是特別好用的。

          我給大家舉一個簡單例子。

          首先我們創(chuàng)建一個 Spring Boot 工具,引入 Web、MyBatis、Freemarker 以及 MySQL 驅(qū)動,如下:

          引入 Freemarker 是因為我們將來使用 Freemarker 做代碼模板,松哥之前自己開發(fā)的那個逆向工程,里邊使用的代碼模版就是 Freemarker。

          項目創(chuàng)建成功之后,引入 MyBatis-Plus 相關(guān)依賴,一共是兩個:

          <dependency>
          ????<groupId>com.baomidougroupId>
          ????<artifactId>mybatis-plus-generatorartifactId>
          ????<version>3.5.2version>
          dependency>
          <dependency>
          ????<groupId>com.baomidougroupId>
          ????<artifactId>mybatis-plus-boot-starterartifactId>
          ????<version>3.5.1version>
          dependency>

          一個是 MP 自己的依賴,還有一個是逆向工程的依賴。

          接下來我們在 application.properties 中配置一下數(shù)據(jù)連接信息:

          spring.datasource.url=jdbc:mysql:///vhr?serverTimezone=Asia/Shanghai&useSSL=false
          spring.datasource.username=root
          spring.datasource.password=123

          mybatis-plus.configuration.map-underscore-to-camel-case=false

          上面三行是數(shù)據(jù)庫連接的基本信息。最下面一行表示在 MP 將來查詢的時候,不要自動進行列名轉(zhuǎn)化。啥意思呢?比如我在 Book 類中有一個屬性名為 authorName,那么在 MP 去數(shù)據(jù)庫查詢的時候,會自動把 authorName 轉(zhuǎn)為 author_name,如果數(shù)據(jù)表在定義的時候剛好就是下劃線那么沒問題,但是如果數(shù)據(jù)表在定義的時候,不是下劃線,那么自動轉(zhuǎn)換之后就會出錯,現(xiàn)在加上上面這個最后一行配置,就沒問題了。

          項目創(chuàng)建成功后,我們直接在單元測試中添加如下代碼,進行代碼生成:

          FastAutoGenerator.create("jdbc:mysql:///vhr?serverTimezone=Asia/Shanghai&useSSL=false",?"root",?"123")
          ????????.globalConfig(builder?->?{
          ????????????builder.author("javaboy")?//?設(shè)置作者
          ????????????????????.disableOpenDir()
          ????????????????????.fileOverride()?//?覆蓋已生成文件
          ????????????????????.outputDir("src/main/java");?//?指定輸出目錄
          ????????})
          ????????.packageConfig(builder?->?{
          ????????????builder.parent("org.javaboy")?//?設(shè)置父包名
          ????????????????????.moduleName("mybatis_gen")?//?設(shè)置父包模塊名
          ????????????????????.pathInfo(Collections.singletonMap(OutputFile.xml,?"src/main/resources/mapper"));?//?設(shè)置mapperXml生成路徑
          ????????})
          ????????.strategyConfig(builder?->?{
          ????????????builder.addInclude("employee")?//?設(shè)置需要生成的表名
          ????????????????????.addTablePrefix("t_",?"c_");?//?設(shè)置過濾表前綴
          ????????})
          ????????.templateEngine(new?FreemarkerTemplateEngine())?//?使用Freemarker引擎模板,默認的是Velocity引擎模板
          ????????.execute();

          上面的配置分了四塊:

          1. globalConfig:這個是全劇配置,配置了生成的代碼注釋中的作者信息;默認情況下,代碼生成完畢后會自動打開生成的目錄,disableOpenDir 方法表示禁用這個功能;fileOverride 方法即將被移除,未來會不可用;最后的 outputDir 方法則是指定生成代碼的輸出目錄。
          2. packageConfig:這個是配置生成的包信息,parent 方法用來設(shè)置父包名;moduleName 設(shè)置父包模塊名,這個參數(shù)的值加上 parent 的參數(shù)值,就是完整的包路徑;最后面則是指定了生成的 mapper.xml 文件的位置。
          3. strategyConfig:這個是配置策略,對于我們來說,這里比較重要的就是配置需要逆向的表,將表名稱挨個列出來。
          4. templteEngine:這個是配置模版引擎。

          除了上面這些常規(guī)的配置外,如果你的需求比較特殊,也可以配置其他選項,具體的參考這個文檔:

          • https://baomidou.com/pages/981406/

          配置完成后,執(zhí)行這段單元測試代碼,生成相關(guān)代碼,如下:

          接下來,想做增刪改查,直接做即可,像下面這樣:

          @RestController
          public?class?EmployeeController?{

          ????@Autowired
          ????IEmployeeService?iEmployeeService;

          ????@GetMapping("/emps")
          ????public?List?getAllEmps()?{
          ????????List?list?=?iEmployeeService.list();
          ????????return?list;
          ????}
          }

          IEmployeeService 繼承自 IService,常規(guī)的增刪改查該有的都有。

          最近感覺這個比較好用,我一直在用這個,感興趣的小伙伴不妨試試。

          瀏覽 47
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

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

          手機掃一掃分享

          分享
          舉報
          <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>
                  日韩美女操B | 国产爱视频 | 欧美一级做一级a 做片性视频 | 欧美成人网在线 | 色婷婷国产在线 |