首先应该了解,什么是逆向工程:
mybatis需要程序员自己编写sql语句,mybatis官方提供逆向工程,可以针对单表自动生成mybatis执行所需要的代码(mapper.java、mapper.xml、pojo…),可以让程序员将更多的精力放在繁杂的业务逻辑上。
企业实际开发中,常用的逆向工程方式:由数据库的表生成java代码。
可上官网进行下载,也可以在我的github上进行下载。
传送门:Mybatis逆向工程源码
为了演示,数据库中添加一个表
代码解析:
打开源码之后的样子,至于log4j文件,添加上是为了在控制台查看打印出执行的信息。
generatorConfig.xml
部分代码:
<jdbcConnection driverClass="com.microsoft.sqlserver.jdbc.SQLServerDriver"
connectionURL="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=project"
userId="sa"
password="123">
</jdbcConnection>
与数据库的连接代码,具体代码可以根据使用的数据库类型和表名的进行修改。
<javaTypeResolver>
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer
<!-- targetProject:生成PO类的位置 -->
<javaModelGenerator targetPackage="com.hpu.dong.pojo"
targetProject=".\src">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
<!-- 从数据库返回的值被清理前后的空格 -->
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- targetProject:mapper映射文件生成的位置 -->
<sqlMapGenerator targetPackage="com.hpu.dong.mapper"
targetProject=".\src">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
</sqlMapGenerator>
<!-- targetPackage:mapper接口生成的位置 -->
<javaClientGenerator type="XMLMAPPER"
targetPackage="com.hpu.dong.mapper"
targetProject=".\src">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
</javaClientGenerator>
指定生成的pojo、mapper文件的位置等。
<table schema="" tableName="MUser"></table>
指定数据库的表名。
运行:
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.exception.XMLParserException;
import org.mybatis.generator.internal.DefaultShellCallback;
public class GeneratorSqlmap {
public void generator() throws Exception{
List<String> warnings = new ArrayList<String>();
boolean overwrite = true;
//指定 逆向工程配置文件
File configFile = new File("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);
}
public static void main(String[] args) throws Exception {
try {
GeneratorSqlmap generatorSqlmap = new GeneratorSqlmap();
generatorSqlmap.generator();
} catch (Exception e) {
e.printStackTrace();
}
}
}
控制台打印出
DEBUG [main] - Retrieving column information for table "MUser"
DEBUG [main] - Found column "id", data type 4, in table "project.dbo.MUser"
DEBUG [main] - Found column "username", data type 12, in table "project.dbo.MUser"
DEBUG [main] - Found column "sex", data type 12, in table "project.dbo.MUser"
DEBUG [main] - Found column "birthday", data type 91, in table "project.dbo.MUser"
DEBUG [main] - Found column "address", data type 12, in table "project.dbo.MUser"
运行完毕。刷新工程,