mybatis需要程序员自己编写sql语句,mybatis官方提供逆向工程,可以针对单表自动生成mybatis执行所需要的代码(mapper.java、mapper.xml、pojo…),可以让程序员将更多的精力放在繁杂的业务逻辑上。
Mybatis逆向工程生成的Mapper所进行的操作都是针对单表的,也许你可能会觉得那这就有点鸡肋了,但是在大型项目中,很少有复杂的多表关联查询,所以作用还是很大的。
<!--mybatis逆向工程 -->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.7</version>
</dependency>
<!--mybatis 通用mapper操作 -->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>3.5.3</version>
</dependency>
generate.xml配置:
<generatorConfiguration>
<!--mybatis逆向工程,本质上是根据 数据库表生成 pojo类,mapper接口以及mapper.xml 文件 -->
<!--读取配置文件 -->
<properties resource="config/jdbc.properties" />
<context id="Mysql" targetRuntime="MyBatis3Simple"
defaultModelType="flat">
<!-- 配置pojo的序列化 -->
<plugin type="org.mybatis.generator.plugins.SerializablePlugin" />
<plugin type="tk.mybatis.mapper.generator.MapperPlugin">
<property name="mappers" value="tk.mybatis.mapper.common.Mapper" />
<property name="caseSensitive" value="true" />
<property name="forceAnnotation" value="true" />
</plugin>
<commentGenerator>
<!-- 是否去除自动生成的注释 true:是 : false:否 -->
<property name="suppressAllComments" value="true" />
</commentGenerator>
<!--配置链接参数-->
<jdbcConnection driverClass="${jdbc.driverClass}"
connectionURL="${jdbc.jdbcUrl}" userId="${jdbc.user}" password="${jdbc.password}">
</jdbcConnection>
<!--
默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer
true,把JDBC DECIMAL 和 NUMERIC 类型解析为java.math.BigDecimal
-->
<javaTypeResolver>
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!-- targetProject:生成PO类的位置 targetPackage:生成pojo包的名字-->
<javaModelGenerator targetPackage="net.seehope.demo.user.pojo"
targetProject="./src/test/java">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
<!-- 从数据库返回的值被清理前后的空格 -->
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- targetProject:mapper映射文件生成的位置 targetPackage:将要生成的mapper映射文件包名字-->
<sqlMapGenerator targetPackage="mapper" targetProject="./src/test/resources">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
</sqlMapGenerator>
<!-- targetPackage:mapper接口生成的位置 -->
<javaClientGenerator type="XMLMAPPER"
targetPackage="net.seehope.demo.user.mapper" targetProject="./src/test/java">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
</javaClientGenerator>
<!--通配符匹配模块前缀,生成实体类以及映射接口-->
<table tableName="upload_file">
<generatedKey column="id" sqlStatement="Mysql" identity="true" />
</table>
</context>
</generatorConfiguration>
最后启动util包中的创建mybatis逆向工程工具类
public class GeneratorMybatisMapper {
/**
* 根据默认配置创建逆向工程
* 默认配置文件为./src/main/resources/config/generator.xml
*/
public static void createMybatisGeneratorProject() {
createMybatisGeneratorProject("./src/main/resources/config/generator.xml");
}
/**
* 根据传入的配置文件路径生成逆向工程
* @param genertorConfigPath 配置文件路径
*/
public static void createMybatisGeneratorProject(String genertorConfigPath) {
try {
List<String> warnings = new ArrayList<String>();
boolean overwrite = true;
File configFile = new File(genertorConfigPath);
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);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
public static void main(String[] args) {
createMybatisGeneratorProject();
}
}