1 延迟加载:懒加载,减轻数据库压力,发生在关联查询, 在mybatis中只有resultMap标签才可以完成懒加载(collection和association)(嵌套查询嵌套结果) 2 延迟加载分类:A --直接加载:执行完主加载对象的查询后,马上就会执行关联对象的select查询 B --侵入式延迟:执行对主加载对象进行查询时,不会执行对关联对象的查询,但当要 访问主加载对象的某个属性(该属性不是关联对象的属性)时,就会执行关联对象的select查询 B --深度延迟:执行对主加载对象进行查询时,不会执行对关联对象的查询,访问主加载对 象的查询时,也不会执行关联对象的select查询,只真正访问关联对象的详情时,才会执行关联对象的select查询 测试二级缓存 发现速度真的快很多,只有不涉及增删改都可以继续使用二级缓存 二级缓存需要为实体类继承Serializable (实例化,即实现二级缓存需要为实体类继承Serializable)
逆向工程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 location="D:\meworkspace\kkbmybatis\mybatis-generator\mysql-connector-java-5.0.5-bin.jar"/>-->
<context id="DB2Tables" targetRuntime="MyBatis3">
<commentGenerator>
<property name="suppressDate" value="true"/>
<!-- 是否自动生成注释-->
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<!-- 数据库连接url,用户名,密码 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://119.3.20.212:3306/ssm" userId="root" password="wdk123456">
</jdbcConnection>
<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!-- 生成模型的包名和位置-->
<javaModelGenerator targetPackage="com.kkb.mybatis.phase07.po" targetProject=".\src\main\java">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="ture"/>
<!-- 从数据库返回的值被清理前后的空格 -->
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!-- 生成映射文件的包名和位置-->
<!-- targetProject:mapper映射文件生成的位置 -->
<sqlMapGenerator targetPackage="com.kkb.mybatis.phase07.mapperxml" targetProject=".\src\main\java">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<!-- 生成DAO的包名和位置-->
<!-- targetPackage:mapper接口生成的位置 -->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.kkb.mybatis.phase07.dao" targetProject=".\src\main\java">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<!-- 要生成哪些表-->
<!--<table tableName="pl_wb_compensation" domainObjectName="PlWbCompensation" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>-->
<table schema="" tableName="user">
<!-- 如果设置为true,生成的model类会直接使用column本身的名字,而不会再使用驼峰命名方法,比如BORN_DATE,生成的属性名字就是BORN_DATE,而不会是bornDate -->
<property name="useActualColumnNames" value="false"/>
</table>
<!--<table tableName="user" domainObjectName="UserDto" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table> -->
<!-- <table tableName="syslogs" domainObjectName="SyslogsDto" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table> -->
</context>
</generatorConfiguration>
main方法
package com.mybatis.generator.main;
import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.internal.DefaultShellCallback;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
public class Generator {
public void generator() throws Exception{
List<String> warnings = new ArrayList<String>();
boolean overwrite = true;
//指定 逆向工程配置文件
File configFile = new File("generatorConfig.xml");
ConfigurationParser cp = new ConfigurationParser(warnings);
Configuration config = cp.parseConfiguration(configFile);
DefaultShellCallback callback = new DefaultShellCallback(overwrite);
MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config,
callback, warnings);
myBatisGenerator.generate(null);
}
public static void main(String[] args) throws Exception {
try {
Generator generator = new Generator();
generator.generator();
} catch (Exception e) {
e.printStackTrace();
}
}
}
分页
记住,
configuration标签下写子标签,是有标签顺序的,具体顺序可以ctrl+鼠标点击查看