MyBatis Generator——Maven模式生成程式碼
阿新 • • 發佈:2018-12-27
使用Maven執行MyBatis Generator
MyBatis Generator (MBG)包含一個Maven外掛,用於整合到Maven構建中。用於將其整合到Maven構建中。按照約定策略與Maven的配置保持一致,在Maven構建中包含MBG是非常簡單的。最小配置如下所示:
<project ...>
...
<build>
...
<plugins>
...
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3 .5</version>
</plugin>
...
</plugins>
...
</build>
...
</project>
Maven目標和執行
MBG Maven外掛包含一個目標:
mybatis-generator:generate
這個目標不是由Maven自動執行的。它可以以兩種方式執行。
可以從命令列執行該命令:
mvn mybatis-generator:generate
您可以使用標準Maven命令列屬性將引數傳遞給目標。例如:
mvn -Dmybatis.generator.overwrite=true mybatis-generator:generate
這將執行MBG,並指示它覆蓋它可能找到的任何現有的Java檔案。
在持續構建環境中,您可能想要自動地執行Maven構建的MBG。這可以通過配置目標自動執行來實現。下面的例子如下:
<project ...>
...
<build>
...
<plugins>
...
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3 .5</version>
<executions>
<execution>
<id>Generate MyBatis Artifacts</id>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
</plugin>
...
</plugins>
...
</build>
...
</project>
mybatis-generator的使用舉例
建立建立相應的SQL
/*
SQLyog 企業版 - MySQL GUI v8.14
MySQL - 5.7.12-log : Database - test1
*********************************************************************
*/
/*!40101 SET NAMES utf8 */;
/*!40101 SET SQL_MODE=''*/;
/*!40014 SET @[email protected]@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @[email protected]@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @[email protected]@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @[email protected]@SQL_NOTES, SQL_NOTES=0 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/`test1` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_bin */;
USE `test1`;
/*Table structure for table `sys_acl` */
DROP TABLE IF EXISTS `sys_acl`;
CREATE TABLE `sys_acl` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '許可權id',
`code` varchar(20) COLLATE utf8_bin NOT NULL COMMENT '許可權碼',
`name` varchar(20) COLLATE utf8_bin NOT NULL COMMENT '許可權名稱',
`acl_module_id` int(11) NOT NULL COMMENT '許可權所在的許可權模組id',
`url` varchar(100) COLLATE utf8_bin NOT NULL COMMENT '請求的url,可以填正則表示式',
`type` int(11) NOT NULL DEFAULT '0' COMMENT '型別:1、選單;2、按鈕;3、其它',
`status` int(11) NOT NULL COMMENT '狀態:1、正常;0、凍結',
`seq` int(11) DEFAULT NULL COMMENT '許可權在當前模組下的順序,由小到大',
`remark` varchar(200) COLLATE utf8_bin DEFAULT NULL COMMENT '備註',
`operator` varchar(20) COLLATE utf8_bin NOT NULL COMMENT '操作者',
`operate_time` datetime NOT NULL COMMENT '最後一次更新時間',
`operate_ip` varchar(20) COLLATE utf8_bin NOT NULL COMMENT '最後一次更新ip',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
/*Data for the table `sys_acl` */
/*Table structure for table `sys_dept` */
DROP TABLE IF EXISTS `sys_dept`;
CREATE TABLE `sys_dept` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '部門id',
`name` varchar(20) COLLATE utf8_bin NOT NULL COMMENT '部門名稱',
`parent_id` int(11) NOT NULL DEFAULT '0' COMMENT '上級id',
`level` varchar(200) COLLATE utf8_bin NOT NULL COMMENT '部門層級',
`seq` int(11) NOT NULL DEFAULT '0' COMMENT '部門在當前層級下的順序,預設由小到大',
`remark` varchar(200) COLLATE utf8_bin DEFAULT NULL COMMENT '備註',
`oprator` varchar(20) COLLATE utf8_bin NOT NULL COMMENT '操作者',
`operate_time` datetime NOT NULL COMMENT '最後一次操作時間',
`operate_ip` varchar(20) COLLATE utf8_bin NOT NULL COMMENT '最後一次更新操作者的ip地址',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
/*Data for the table `sys_dept` */
insert into `sys_dept`(`id`,`name`,`parent_id`,`level`,`seq`,`remark`,`oprator`,`operate_time`,`operate_ip`) values (1,'技術部',0,'0',1,'技術部','system','2017-11-29 09:40:38','127.0.0.1'),(2,'後端開發',1,'0.1',1,'後端','system-update','2017-12-07 11:49:24','127.0.0.1'),(3,'前端開發',1,'0.1',2,'','system-update','2017-12-29 17:13:04','127.0.0.1'),(4,'UI設計',1,'0.1',3,'','system','2017-12-07 10:51:01','127.0.0.1');
/*Table structure for table `sys_user` */
DROP TABLE IF EXISTS `sys_user`;
CREATE TABLE `sys_user` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '使用者id',
`username` varchar(20) COLLATE utf8_bin NOT NULL COMMENT '使用者名稱',
`telephone` varchar(13) COLLATE utf8_bin NOT NULL COMMENT '手機號',
`mail` varchar(50) COLLATE utf8_bin NOT NULL COMMENT '郵箱',
`password` varchar(40) COLLATE utf8_bin NOT NULL COMMENT '加密後的密碼',
`dept_id` int(11) NOT NULL COMMENT '使用者所在部門的id',
`status` int(1) NOT NULL COMMENT '狀態:1:正常;0、凍結狀態;2、刪除',
`remark` varchar(200) COLLATE utf8_bin DEFAULT NULL COMMENT '備註',
`operator` varchar(20) COLLATE utf8_bin NOT NULL COMMENT '操作者',
`operate_time` datetime NOT NULL COMMENT '最後一次操作時間',
`operate_ip` varchar(20) COLLATE utf8_bin NOT NULL COMMENT '最後一次更新ip',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
/*Data for the table `sys_user` */
insert into `sys_user`(`id`,`username`,`telephone`,`mail`,`password`,`dept_id`,`status`,`remark`,`operator`,`operate_time`,`operate_ip`) values (1,'Admin','18612344321','[email protected]','E10ADC3949BA59ABBE56E057F20F883E',1,1,'admin','system','2017-12-29 15:25:17','127.0.0.1'),(2,'jimin','13188889999','[email protected]','E10ADC3949BA59ABBE56E057F20F883E',1,1,'jimin,zheng','Admin','2017-12-30 11:59:10','127.0.0.1'),(4,'zhangzhenyi','15028855973','[email protected]','E10ADC3949BA59ABBE56E057F20F883E',1,1,'','Admin','2018-01-08 15:12:21','0:0:0:0:0:0:0:1');
/*!40101 SET [email protected]_SQL_MODE */;
/*!40014 SET [email protected]_FOREIGN_KEY_CHECKS */;
/*!40014 SET [email protected]_UNIQUE_CHECKS */;
/*!40111 SET [email protected]_SQL_NOTES */;
新增pom外掛及依賴
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>mybatis-generator-parent</artifactId>
<groupId>com.lyc</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>mybatis-generator-maven</artifactId>
<packaging>jar</packaging>
<name>mybatis-generator-maven</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
<version>3.5</version>
</plugin>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.5</version>
<executions>
<execution>
<id>Generate MyBatis Artifacts</id>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<dependencies>
<!-- mysql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.30</version>
</dependency>
</dependencies>
<configuration>
<!--配置檔案的路徑-->
<configurationFile>${basedir}/src/main/resources/generatorConfig.xml</configurationFile>
<overwrite>true</overwrite>
</configuration>
</plugin>
</plugins>
</build>
</project>
建立generatorConfig.xml配置檔案
該配置檔案和之前寫的MyBatis Generator——命令列生成程式碼是類似的,詳細可以檢視前面的文章,在此我就不再一一複述。
<?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>
<context id="test" targetRuntime="MyBatis3">
<plugin type="org.mybatis.generator.plugins.EqualsHashCodePlugin"></plugin>
<plugin type="org.mybatis.generator.plugins.SerializablePlugin"></plugin>
<plugin type="org.mybatis.generator.plugins.ToStringPlugin"></plugin>
<commentGenerator>
<!-- 這個元素用來去除指定生成的註釋中是否包含生成的日期 false:表示保護 -->
<!-- 如果生成日期,會造成即使修改一個欄位,整個實體類所有屬性都會發生變化,不利於版本控制,所以設定為true -->
<property name="suppressDate" value="true" />
<!-- 是否去除自動生成的註釋 true:是 : false:否 -->
<property name="suppressAllComments" value="false" />
</commentGenerator>
<!--資料庫連結URL,使用者名稱、密碼 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost/test1" userId="root" password="zhangzhenyi">
</jdbcConnection>
<javaTypeResolver>
<!-- This property is used to specify whether MyBatis Generator should
force the use of java.math.BigDecimal for DECIMAL and NUMERIC fields, -->
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!-- 生成模型的包名和位置 -->
<javaModelGenerator targetPackage="com.lyc.model" targetProject="target">
<property name="enableSubPackages" value="true" />
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- 生成對映檔案的包名和位置 -->
<sqlMapGenerator targetPackage="com.lyc.mapper" targetProject="target">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
<!-- 生成DAO的包名和位置 -->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.lyc.dao" targetProject="target">
<property name="enableSubPackages" value="true" />
</javaClientGenerator>
<!-- 要生成哪些表 -->
<table tableName="sys_user" domainObjectName="SysUser" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false" />
<table tableName="sys_dept" domainObjectName="SysDept" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false" />
<table tableName="sys_acl" domainObjectName="SysAcl" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false" />
</context>
</generatorConfiguration>
在命令列中執行
mvn compile
mvn mybatis-generator:generate
在IDEA的Maven Projects面板中執行
執行結果
注意事項
當我們發現控制檯中展示出下列資訊時:
The specified target project directory target does not exist
這就說明target目錄沒有建立,所以說需要我們先建立相應的目錄,我們可以通過優先執行maven的構建命令加以解決:
mvn compile