zoukankan      html  css  js  c++  java
  • 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、结果

  • 相关阅读:
    Linux如何对文件内容中的关键字进行查找
    Gitlab如何进行备份恢复与迁移?
    Centos7上传文件和下载文件命令
    Linux下如何查看系统启动时间和运行时间
    您应该知道的35个绝对重要的Linux命令
    rabbitMq可靠消息投递之交换机备份
    rabbitMq可靠性投递之配置(消息至交换机,至队列不通的回调)
    springcloud超时重试机制的先后顺序
    mysql 8.0 1405的坑
    linux安装mysql8.0
  • 原文地址:https://www.cnblogs.com/PreachChen/p/8676707.html
Copyright © 2011-2022 走看看