mybatis的延迟加载与代码生成工具(MBG)

mybatis的延迟加载与代码生成工具

1.什么是延迟加载

 延迟加载(lazy load)是(也称为懒加载)Hibernate3关联关系对象默认的加载方式,延迟加载机制是为了避免一些无谓的性能开销而提出来的,所谓延迟加载就是当在真正需要数据的时候,才真正执行数据加载操作。

配置方法:在需要延迟查询的标签中添加fetchType,值设为true。

    需要的库依赖:CGLIB
<dependency>
     <groupId>cglib</groupId>
        <artifactId>cglib</artifactId>
      <version>3.1</version>
</dependency>
什么是CGLIB?
CGLIB是一个功能强大,高性能的代码生成包。它为没有实现接口的类提供代理,为JDK的动态代理提供了很好的补充。通常可以使用Java的动态代理创建代理,但当要代理的类没有实现接口或者为了更好的性能,CGLIB是一个好的选择。
CGLIB原理
CGLIB原理:动态生成一个要代理类的子类,子类重写要代理的类的所有不是final的方法。在子类中采用方法拦截的技术拦截所有父类方法的调用,顺势织入横切逻辑。它比使用java反射的JDK动态代理要快。
CGLIB底层:使用字节码处理框架ASM,来转换字节码并生成新的类。不鼓励直接使用ASM,因为它要求你必须对JVM内部结构包括class文件的格式和指令集都很熟悉。
CGLIB缺点:对于final方法,无法进行代理。
CGLIB的应用
广泛的被许多AOP的框架使用,例如Spring AOP和dynaop。Hibernate使用CGLIB来代理单端single-ended(多对一和一对一)关联。
        ---------节选自博客http://blog.csdn.net/zghwaicsdn/article/details/50957474

2.MBG(MyBatis Generator)

MyBatis Generator (MBG) 是一个Mybatis的代码生成器 MyBatis 和 iBATIS. 他可以生成Mybatis各个版本的代码,和iBATIS 2.2.0版本以后的代码。 他可以内省数据库的表(或多个表)然后生成可以用来访问(多个)表的基础对象。 这样和数据库表进行交互时不需要创建对象和配置文件。 MBG的解决了对数据库操作有最大影响的一些简单的CRUD(插入,查询,更新,删除)操作。
步骤:
        1.添加插件(pom.xml)
        <!-- 添加mbg插件 -->
    <build>
        <plugins>
            <plugin>
            <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.5</version>
<!--mbg.xml在后面会创建-->
            <configuration>         <configurationFile>src/main/java/mbg.xml</configurationFile>
                </configuration>
            </plugin>
        </plugins>
    </build>
    2. 创建配置文件
        创建mbg.xml:
        <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
  PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
  "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

<generatorConfiguration>
  <!-- <classPathEntry> 元素 用于添加驱动包 -->
  <classPathEntry location="E:\Mr.liao\mysql-connector-java-5.1.28-bin.jar" />
  <!-- 设置生成代码的规则
            targetRuntime开发环境使用的mybatis版本
   -->
  <context id="DB2Tables" targetRuntime="MyBatis3">
    <!-- <jdbcConnection> 元素用于配置数据库链接四大参数-->
    <jdbcConnection 
        driverClass="com.mysql.jdbc.Driver"      connectionURL="jdbc:mysql://localhost:3306/test"        userId="root"
        password="zyp">
    </jdbcConnection>

    <javaTypeResolver >
      <property name="forceBigDecimals" value="false" />
    </javaTypeResolver>
    <!-- 声明实体类 targetPackage包名 targetProject位置 -->
    <javaModelGenerator targetPackage="cn.zyp.entity" targetProject="src/main/java">
      <property name="enableSubPackages" value="true" />
      <property name="trimStrings" value="true" />
    </javaModelGenerator>
    <!-- sql语句相关的xml或者注解的生成包路径 -->
    <sqlMapGenerator targetPackage="cn.zyp.resource"  targetProject="src/main/java">
      <property name="enableSubPackages" value="true" />
    </sqlMapGenerator>
    <!-- 生成接口的位置 type选择注解(ANNOTATEDMAPPER)还是xml配置(XMLMAPPER)-->
    <javaClientGenerator type="XMLMAPPER" targetPackage="cn.zyp.dao"  targetProject="src/main/java">
      <property name="enableSubPackages" value="true" />
    </javaClientGenerator>
    <!-- 声明需要生成代码的表 多个表多个table声明-->
    <table  tableName="FOOD">
    </table>

  </context>
</generatorConfiguration>

3.配置运行命令

运行命令:mybatis-generator:generate
右键项目——》run as——》——》run configurations

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值