网站首页 > 技术文章 正文
一、前言
上篇文章介绍了Mybatis的mapper3原理和使用方法,其中也介绍了mapper3自提供的generator生成器,然后抽时间研究了下mybaits generator原理为改进做准备。
二、mybatis generator原理
2.1 环境准备
为了方便debug查看信息,所以本文不使用 mvn mybatis-generator:generate生成配置文件,而使用下面代码:
public static void main(String[] args) throws SQLException, IOException, InterruptedException, XMLParserException, InvalidConfigurationException { // TODO Auto-generated method stub 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); }
上面代码需要pom文件配置:
<dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.3.5</version> </dependency>
其中generatorConfig.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="/Users/zhuizhumengxiang/.m2/repository/com/oracle/ojdbc14/10.2.0.3.0/ojdbc14-10.2.0.3.0.jar" /> <context id="demo" targetRuntime="MyBatis3"> <property name="suppressAllComments" value="false" /> <property name="useActualColumnNames" value="false" /> <!-- 配置数据库连接 --> <jdbcConnection driverClass="oracle.jdbc.driver.OracleDriver" connectionURL="jdbc:oracle:thin:@erpdb8036.alibabacorp.com:1557:erp8036" userId="bdapps" password="bdapps8036"></jdbcConnection> <javaTypeResolver> <property name="forceBigDecimals" value="false" /> </javaTypeResolver> <!-- 对应DO --> <javaModelGenerator targetPackage="com.zlx.demo.dal.business" targetProject="src/main/java"> <property name="enableSubPackages" value="true" /> <property name="trimStrings" value="true" /> </javaModelGenerator> <sqlMapGenerator targetPackage="com.zlx.demo.dal.businesss.mapper" targetProject="src/main/resources"> <property name="enableSubPackages" value="true" /> </sqlMapGenerator> <javaClientGenerator type="XMLMAPPER" targetPackage="com.zlx.demo.dal.business.mapper" targetProject="src/main/java"> <property name="enableSubPackages" value="true" /> </javaClientGenerator> <!-- 卖家信息表 --> <table tableName="SUIT_USER_TEST" domainObjectName="UserTest" enableUpdateByExample="false" enableDeleteByExample="false"> <!-- 通用字段 --> <columnOverride column="ID" property="id" javaType="java.lang.Long" jdbcType="NUMERIC" /> <columnOverride column="GMT_CREATE" property="gmtCreate" javaType="java.util.Date" jdbcType="TIMESTAMP" /> <columnOverride column="CREATOR" property="creator" javaType="java.lang.String" jdbcType="VARCHAR" /> <columnOverride column="GMT_MODIFIED" property="gmtModified" javaType="java.util.Date" jdbcType="TIMESTAMP" /> <columnOverride column="MODIFIER" property="modifier" javaType="java.lang.String" jdbcType="VARCHAR" /> <columnOverride column="IS_DELETED" property="isDeleted" javaType="java.lang.String" jdbcType="CHAR" /> </table> </context> </generatorConfiguration>
执行后会生成UserTestMapper.xml为:
Java
生成的mapper接口SuitOrgDoMapper.Java为:
Java
2.2 原理分析
main函数里面的代码:
ConfigurationParser cp = new ConfigurationParser(warnings);
Configuration config = cp.parseConfiguration(configFile);
作用是解析配置文件并生成对象到Configuration
其中成员classPathEntries存放配置文件里面驱动jar位置
Java
成员变量contexts存放内容:
Java
然后看下MyBatisGenerator.generate的时序图:
Java
可知如果在generatorconf.xml配置了插件,则会交给PluginAggregator管理,然后5,6分别生成基础Java类和xml内存文件,如果配置了插件则还会7,8调用插件里面生成扩展Java类和xml.最后内存文件写入磁盘。
每晚8:00烛光学院的讲师将会在腾讯课堂烛光学院Java高级免费试听课程中给大家详细讲解的,而你只需8:00准时进入课堂就可以了
Java学习资料获取或免费进入课堂权限获取(复制下段连接至浏览器即可)
data:text/html;charset=UTF-8;base64,5p625p6E5biI5a2m5Lmg6LWE5paZ5YWN6LS56aKG5Y+W6K+35Yqg5omj5omj5Y+35pivMTAxODkyNTc4MA==
猜你喜欢
- 2024-09-29 MybatisPlus—kotlin代码生成 mybatisplus 代码生成器
- 2024-09-29 Spring boot Mybatis 整合 springboot整合mybatis流程
- 2024-09-29 SpringBoot使用Mybatis-FreeMarker
- 2024-09-29 MyBatis自动生成Mapper插件 mybatis 生成mapper
- 2024-09-29 增强Mybatis常用方案 mybatis-plus扩展
- 2024-09-29 网易架构师吐血整理:2分钟看完Mybatis核心知识点
- 2024-09-29 Mybatis的XML映射文件的继承问题 mybatis映射文件的主要元素及作用
- 2024-09-29 Mybatis 自动生成bean mybatis 自动生成bo
- 2024-09-29 深入理解Python生成器(Generators)
- 2024-09-29 如何避免出现 SQL 注入漏洞 怎样避免sql注入
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)