mybatis-geneator 是一款 mybatis 自动代码生成工具,MyBatis 属于半自动化的 ORM 框架,需要手动书写 Mapping 映射文件,mybatis-gennerator 可以帮助我们自动生成 mybatis 所需要的 Model、Dao、mapper xml 文件。
MyBatis Generator 官网地址:http://mybatis.org/generator/
mybatis-geneator 有如下几种使用方式:
- 命令行
- Java 程序
- Maven 插件
- IDEA 插件
- Eclipse 插件
- Ant 方式
不管哪种方式,核心都需要一个配置文件 generatorConfig.xml,该文件包含了连接数据库参数;生成的 Model、Dao、Mapper 目标路径;指定数据库表;类型的转换处理等配置,以下为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="E:\java_tfd\apache-maven-3.2.5-bin\repository\mysql\mysql-connector-java\5.1.47\mysql-connector-java-5.1.47.jar"/> <context id="DB2Tables" targetRuntime="MyBatis3"> <commentGenerator> <property name="suppressDate" value="true"/> <!-- 是否去除自动生成的注释 true:是 : false:否 --> <property name="suppressAllComments" value="true"/> </commentGenerator> <!--数据库链接 URL,用户名、密码 --> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost/hiov" userId="root" password="123456"> </jdbcConnection> <javaTypeResolver> <property name="forceBigDecimals" value="false"/> </javaTypeResolver> <!-- 生成模型的包名和位置--> <javaModelGenerator targetPackage="com.huatec.hiot.iov.entity" targetProject="E:\huatec\product\hiot\v2\workspace\hiov\core\src\main\java"> <property name="enableSubPackages" value="true"/> <property name="trimStrings" value="true"/> </javaModelGenerator> <!-- 生成映射文件的包名和位置--> <sqlMapGenerator targetPackage="sqlmapper.iov" targetProject="E:\huatec\product\hiot\v2\workspace\hiov\core\src\main\resources"> <property name="enableSubPackages" value="true"/> </sqlMapGenerator> <!-- 生成 DAO 的包名和位置--> <javaClientGenerator type="XMLMAPPER" targetPackage="com.huatec.hiot.iov.dao" targetProject="E:\huatec\product\hiot\v2\workspace\hiov\core\src\main\java"> <property name="enableSubPackages" value="true"/> </javaClientGenerator> <!-- 要生成的表 tableName 是数据库中的表名或视图名 domainObjectName 是实体类名--> <table tableName="user_emergcontact" domainObjectName="UserEmergcontact" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table> </context> </generatorConfiguration>
说明:
- 数据库驱动可以通过上面 classPathEntry ->location 指定本地驱动 jar 文件位置,也可以直接在项目中引入 jar 依赖。就可以省略该 classPathEntry ->location 配置
- 上面生成 Model、Dao、Mapper 的目录 targetProject 我直接指定的相对路径(相对项目的根目录),也可以使用本地绝对路径(路径一定要写对,否则无法生成代码文件)
- 生成代码文件的最终路径是 targetProject + targetPackage
- 一个数据库表对应一个,所以可以同时指定多个
下面就命令行、Java 程序、IDEA 插件、Maven 插件四种运行方式进行展开讲解。其他方式参见官方文档:http://www.mybatis.org/generator/
一、命令行
首先下载 Mybatis-Generator jar 包,可以到这个地址下载:https://github.com/mybatis/generator/releases ,这里我下载mybatis-generator-core-1.3.5.jar
接着,将mybatis-generator-core-1.3.5.jar 和 generatorConfig.xml放在同一个目录下
最后,在该目录打开命令行,执行如下命令
java -jar mybatis-generator-core-1.3.5.jar -configfile generatorConfig.xml -overwrite
如果执行完提示:MyBatis Generator finished successfully.
则在该目录下的 target 下相应目录就可以看到生成的文件了。
二、Java 程序
1、配置文件
创建 Java 项目,将上述generatorConfig.xml 复制到项目目录,修改 3 个 targetProject 为:src\target\java src\target\resources src\target\java
2、启动程序代码
新建 GeneratorSqlmap.java 文件,内容如下:
public class GeneratorSqlmap { public static void main(String[] args) throws Exception { try { GeneratorSqlmap generatorSqlmap = new GeneratorSqlmap(); generatorSqlmap.generator(); } catch (Exception e) { e.printStackTrace(); } } public void generator() throws Exception { List<string> warnings = new ArrayList<string>(); boolean overwrite = true; File configFile = new File("src\\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); // 输出 warning 日志 warnings.forEach(System.out::println); } }
说明:上述代码只需要根据 generatorConfig.xml 的实际路径修改其引用路径即可
3、Jar 包依赖
将下载好的mybatis-generator-core-1.3.5.jar加入项目依赖(可参见:IDEA Java 项目添加本地 Jar 包)
4、生成文件目录
新建 target 目录,其下新建 java 和 resources 包。最终项目目录结构见下图:
说明:相关目录根据实际情况修改调整。
5、执行 main 方法
执行 GeneratorSqlmap 中的 main 方法即可生成代码文件
三、Maven 程序
pom.xml 加入 mybatis-generator-maven-plugin,如下:
<plugin> <groupid>org.mybatis.generator</groupid> <artifactid>mybatis-generator-maven-plugin</artifactid> <version>1.3.7</version> <configuration> <configurationfile> ${basedir}/src/main/resources/generator/generatorConfig.xml </configurationfile> <overwrite>true</overwrite> <verbose>true</verbose> </configuration> </plugin>
当然数据库驱动依赖是必须的,这里不再列出。
将 generatorConfig.xml 放在指定目录下,按实际情况修改 targetProject 生成路径。
刷新 maven,再执行:
mvn mybatis-generator:generate
或者,IDEA 下直接点击执行:
即可
四、IDEA 插件
很多 IDEA 的 Mybatis 插件都集成了 mybatis-generator 功能,并且都是一键式和界面式操作,更加傻瓜便捷。
如下图,只需点击按界面提示操作即可完成代码自动生成
这里推荐几个插件:
- Free Mybatis Plugin
- MybatisCodeHelperPro
说到这里有些插件是收费的,比如上面提到的 MybatisCodeHelperPro,要想使用完整功能需要花钱才行。
不过,这里送出福利大礼包:jetbrains IDEA 全家桶激活工具(2020.1.2 版本) + JRebel(激活) + MyBatisCodeHelperPro(破解) + MybatisLog(破解),即刻获取免费资源!!!
1 thought on “mybatis-generator代码生成工具自动生成Model、Dao、Mapper代码”