使用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
代码生成完,大功告别成。