MyBatis逆向工程


關於MyBatis

  MyBatis支持普通sql查詢,MyBatis是一個持久層框架,支持定制化(按開發需求編寫)SQL,支持存儲及高級映射。

MyBatis不像JDBC代碼,手動設置參數及獲取結果集。它可以對配置和原生Map使用簡單的XML或注解,將接口和普通的java對象映射成數據庫中的記錄。

MyBatis的優缺點

優點:

  • 簡單易學:

    本身就很小且簡單。沒有任何第三方依賴,最簡單安裝只要兩個jar文件+配置幾個sql映射文件易於學習, 易於使用,

    通過文檔和源代碼,可以比較完全的掌握它的設計思路和實現。 

  • 靈活:

    mybatis不會對應用程序或者數據庫的現有設計強加任何影響。 sql寫在xml里,便於統一管理和優化。 通過sql基本上

    可以實現我們不使用數據訪問框架可以實現的所有功能,或許更多。 

  • 解除sql與程序代碼的耦合:

    通過提供DAL層,將業務邏輯和數據訪問邏輯分離,使系統的設計更清晰,更易維護,更易單元測試。

    sql和代碼的分離,提高了可維護性。 

  • 提供映射標簽,支持對象與數據庫的orm字段關系映射
  • 提供對象關系映射標簽,支持對象關系組建維護
  • 提供xml標簽,支持編寫動態sql。

缺點:

  • 編寫SQL語句時工作量很大,尤其是字段多、關聯表多時,更是如此。
  • SQL語句依賴於數據庫,導致數據庫移植性差,不能更換數據庫。
  • 框架還是比較簡陋,功能尚有缺失,雖然簡化了數據綁定代碼,但是整個底層數據庫查詢實際還是要自己寫的,工作量也比較大,而且不太容易適應快速數據庫修改。
  • 二級緩存機制不佳

使用Mybatis逆向工程,大大提高工作效率,mapper,POJO自動生成。下面介紹MyBatis逆向工程:

1、Maven依賴

 1 <build>
 2     <finalName>zsxt</finalName>
 3     <plugins>
 4         <plugin>
 5             <groupId>org.mybatis.generator</groupId>
 6             <artifactId>mybatis-generator-maven-plugin</artifactId>
 7             <version>1.3.2</version>
 8             <configuration>
 9                 <verbose>true</verbose>
10                 <overwrite>true</overwrite>
11             </configuration>
12         </plugin>
13     </plugins>
14 </build>

2、配置文件,連接數據庫

1 jdbc.driverLocation=E:\\mysql-connector-java-5.1.6.jar
2 jdbc.driverClass=com.mysql.jdbc.Driver
3 jdbc.connectionURL=jdbc:mysql://127.0.0.1:3306/auge
4 jdbc.userId=root
5 jdbc.password=123456

3、逆向工程配置

 1 <generatorConfiguration>
 2     <!--導入屬性配置-->
 3     <properties resource="generator.properties"></properties>
 4 
 5     <!--指定特定數據庫的jdbc驅動jar包的位置-->
 6     <classPathEntry location="${jdbc.driverLocation}"/>
 7 
 8     <context id="default" targetRuntime="MyBatis3">
 9 
10 
11 
12 
13         <!-- optional,旨在創建class時,對注釋進行控制 -->
14         <commentGenerator>
15             <property name="suppressDate" value="true"/>
16             <property name="suppressAllComments" value="false"/>
17         </commentGenerator>
18 
19         <!--jdbc的數據庫連接 -->
20         <jdbcConnection
21                 driverClass="${jdbc.driverClass}"
22                 connectionURL="${jdbc.connectionURL}"
23                 userId="${jdbc.userId}"
24                 password="${jdbc.password}">
25         </jdbcConnection>
26 
27 
28         <!-- 非必需,類型處理器,在數據庫類型和java類型之間的轉換控制-->
29         <javaTypeResolver>
30             <property name="forceBigDecimals" value="false"/>
31         </javaTypeResolver>
32 
33 
34         <!-- Model模型生成器,用來生成含有主鍵key的類,記錄類 以及查詢Example類
35             targetPackage     指定生成的model生成所在的包名
36             targetProject     指定在該項目下所在的路徑
37         -->
38         <javaModelGenerator targetPackage="com.wechat.xiaodou.model"
39                             targetProject="src/main/java">
40 
41             <!-- 是否允許子包,即targetPackage.schemaName.tableName -->
42             <property name="enableSubPackages" value="false"/>
43             <!-- 是否對model添加 構造函數 -->
44             <property name="constructorBased" value="true"/>
45             <!-- 是否對類CHAR類型的列的數據進行trim操作 -->
46             <property name="trimStrings" value="true"/>
47             <!-- 建立的Model對象是否 不可改變  即生成的Model對象不會有 setter方法,只有構造方法 -->
48             <property name="immutable" value="false"/>
49         </javaModelGenerator>
50 
51         <!--Mapper映射文件生成所在的目錄 為每一個數據庫的表生成對應的SqlMap文件 -->
52         <sqlMapGenerator targetPackage="com.wechat.xiaodou.mapper"
53                          targetProject="src/main/java">
54             <property name="enableSubPackages" value="false"/>
55         </sqlMapGenerator>
56 
57         <!-- 客戶端代碼,生成易於使用的針對Model對象和XML配置文件 的代碼
58                 type="ANNOTATEDMAPPER",生成Java Model 和基於注解的Mapper對象
59                 type="MIXEDMAPPER",生成基於注解的Java Model 和相應的Mapper對象
60                 type="XMLMAPPER",生成SQLMap XML文件和獨立的Mapper接口
61         -->
62         <javaClientGenerator targetPackage="com.wechat.xiaodou.mapper"
63                              targetProject="src/main/java" type="XMLMAPPER">
64             <property name="enableSubPackages" value="true"/>
65         </javaClientGenerator>
66 
67         //與數據庫表名一致
68         <table tableName="auge_book_detail" domainObjectName="AugeBookDetail"
69                enableCountByExample="false" enableUpdateByExample="false"
70                enableDeleteByExample="false" enableSelectByExample="false"
71                selectByExampleQueryId="false">
72         </table>
73 
74     </context>
75 </generatorConfiguration>

4、配置運行文件

5、結果

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM