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、结果

原文地址:https://www.cnblogs.com/PreachChen/p/8676707.html