使用Maven執行MBG
這里有一個完整的例子,Mybatis-Spring,下面講解的內容出自這個例子。
使用Maven插件的一個好處是可以將Maven中的屬性使用${property}
形式在generatorConfig.xml
中引用。
先看Maven的pom.xml文件(只顯示有關的部分內容):
<properties>
<!-- MyBatis Generator -->
<!-- Java接口和實體類 -->
<targetJavaProject>${basedir}/src/main/java</targetJavaProject>
<targetMapperPackage>tk.mybatis.mapper.mapper</targetMapperPackage>
<targetModelPackage>tk.mybatis.mapper.model</targetModelPackage>
<!-- XML生成路徑 -->
<targetResourcesProject>${basedir}/src/main/resources</targetResourcesProject>
<targetXMLPackage>mapper</targetXMLPackage>
<!-- 依賴版本 -->
<mapper.version>1.0.0</mapper.version>
<mysql.version>5.1.29</mysql.version>
</properties>
上面是pom.xml中properties
配置的部分內容。這里配置了MBG配置文件中常用到的幾個路徑以及包名。還包含了通用Mapper的版本和數據庫JDBC驅動的版本。
下面是MBG的Maven插件配置:
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
<configuration>
<configurationFile>${basedir}/src/main/resources/generator/generatorConfig.xml</configurationFile>
<overwrite>true</overwrite>
<verbose>true</verbose>
</configuration>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>${mapper.version}</version>
</dependency>
</dependencies>
</plugin>
這里配置了MBG插件,並且配置了generatorConfig.xml
配置文件的路徑。另外還有兩個依賴,分別是JDBC驅動以及通用Mapper(提供了MBG插件)。
下面我們在看看這個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> <properties resource="config.properties"/> <context id="Mysql" targetRuntime="MyBatis3Simple" defaultModelType="flat"> <property name="beginningDelimiter" value="`"/> <property name="endingDelimiter" value="`"/> <plugin type="${mapper.plugin}"> <property name="mappers" value="${mapper.Mapper}"/> </plugin> <jdbcConnection driverClass="${jdbc.driverClass}" connectionURL="${jdbc.url}" userId="${jdbc.user}" password="${jdbc.password}"> </jdbcConnection> <javaModelGenerator targetPackage="${targetModelPackage}" targetProject="${targetJavaProject}"/> <sqlMapGenerator targetPackage="${targetXMLPackage}" targetProject="${targetResourcesProject}"/> <javaClientGenerator targetPackage="${targetMapperPackage}" targetProject="${targetJavaProject}" type="XMLMAPPER" /> <table tableName="%" > <generatedKey column="id" sqlStatement="Mysql" identity="true"/> </table> </context> </generatorConfiguration>
可以看到這個配置文件中的大多數屬性都使用${}
形式替代了。使用<properties resource="config.properties"/>
引入了config.properties
屬性配置,該文件內容如下:
# 數據庫配置
jdbc.driverClass = com.mysql.jdbc.Driver
jdbc.url = jdbc:mysql://localhost:3306/test
jdbc.user = root
jdbc.password =
#c3p0
jdbc.maxPoolSize=50
jdbc.minPoolSize=10
jdbc.maxStatements=100
jdbc.testConnection=true
# 通用Mapper配置
mapper.plugin = tk.mybatis.mapper.generator.MapperPlugin
mapper.Mapper = tk.mybatis.mapper.common.Mapper
使用配置文件的目的是因為系統多處地方使用了這種配置,因而使用一個屬性文件可以方便的保持一致。
除了引用配置文件中的屬性外,部分還使用了pom.xml中的屬性。這種方式使用起來更靈活。
運行
配置好之后如何運行呢?
在pom.xml這一級目錄的命令行窗口執行mvn mybatis-generator:generate
即可(前提是配置了mvn)。
生成的代碼
下面是自動生成的代碼的例子,這些例子可以在Mybatis-Spring這里找到。
一、實體類UserInfo
package tk.mybatis.mapper.model;
import javax.persistence.*;
@Table(name = "user_info")
public class UserInfo {
@Id
@Column(name = "Id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
/**
* 用戶名
*/
private String username;
/**
* 密碼
*/
private String password;
/**
* @return Id
*/
public Integer getId() {
return id;
}
/**
* @param id
*/
public void setId(Integer id) {
this.id = id;
}
/**
* 獲取用戶名
*
* @return username - 用戶名
*/
public String getUsername() {
return username;
}
/**
* 設置用戶名
*
* @param username 用戶名
*/
public void setUsername(String username) {
this.username = username;
}
}
代碼過長,省略了一部分,完整查看:UserInfo
可以看到這里生成的注釋是有意義的內容,注釋來源於數據庫表字段的注釋。
這里還自動生成了幾項注解的內容。
二、Mapper接口UserInfoMapper
package tk.mybatis.mapper.mapper;
import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.model.UserInfo;
public interface UserInfoMapper extends Mapper<UserInfo> {
}
接口自動繼承配置的通用Mapper接口,自動包含泛型實體。
三、Mapper.xml文件UserInfoMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <mapper namespace="tk.mybatis.mapper.mapper.UserInfoMapper" > <resultMap id="BaseResultMap" type="tk.mybatis.mapper.model.UserInfo" > <!-- WARNING - @mbggenerated --> <id column="Id" property="id" jdbcType="INTEGER" /> <result column="username" property="username" jdbcType="VARCHAR" /> <result column="password" property="password" jdbcType="VARCHAR" /> <result column="usertype" property="usertype" jdbcType="VARCHAR" /> <result column="enabled" property="enabled" jdbcType="INTEGER" /> <result column="realname" property="realname" jdbcType="VARCHAR" /> <result column="qq" property="qq" jdbcType="VARCHAR" /> <result column="email" property="email" jdbcType="VARCHAR" /> <result column="tel" property="tel" jdbcType="VARCHAR" /> </resultMap> </mapper>
xml文件只包含了實體的resultMap
映射配置。
注意:如果是在eclipse 中,選擇pom.xml文件,擊右鍵先擇Run AS——>Maven Build… ——>在Goals框中輸入:mybatis-generator:generate
如果在命令行輸入Maven命令即可,注意:一定是當前項目目錄下運行該命令:
mvn mybatis-generator:generate
代碼生成完,大功告別成。