本文目标:介绍如何使用 mybatis-generator-core-1.3.2.jar 生成数据表的持久类(po)和映射类(mapper.java)和映射文件(mapper.xml)。因为当我们的数据表和字段都比较多的时候,如果让我们手动生成这些,会比较繁琐。所以我们不得不通过逆向工程来生成我们需要的东西,当然,过程也比较简单。
如下图:总共必须5个文件
因为我们是给 SpringMVC_Mybatis 课程准备,所以这里也新建了 com.liuyanzhao.ssm 包
记得把 jar 包导入环境
1、GeneratorSqlmap.java 运行程序的作用
代码也可以参考这里:http://www.mybatis.org/generator/running/runningWithJava.html
请注意第15行部分,不知道为什么 File 无法读取到相对路径的文件,很是纳闷。所以,我这里把 generatorConfig.xml 放到了 D 盘根目录
2、generatorConfig.xml
这个文件也可以参考:http://www.mybatis.org/generator/configreference/xmlconfig.html
注意:
1、把 generatorConfig.xml 放到 D 盘根目录,以和 java 文件中的路径对应
2、targetPackage 是包名,Mybatis_Generator/src 是项目名+ src 目录。windows下这里可以写 .\src
mac 下写 ./src 巨坑。
3、table 标签指定表名
运行方法很简单,直接运行 GeneratorSqlmap.java,正常情况下可以看到
Process finished with exit code 0 的回复,如果弄了日志,还可以看到执行过程
如果你的出现 java.io.FileNotFoundException: xxxxxxxxxxxx (系统找不到指定的文件。)
一定是 xml 文件的路径和 java 文件中指定的不一致
最终,我们的 mapper 和 po 包下都会自动生成下面文件
注意:只能点一次运行,如果多次运行会重现重复代码,导致报下列错误
我们最好专门新建一个项目用来生成这些代码,然后将他们复制我们正在开发的项目中。而不是在项目中,生成,自动生成的会把原来的给覆盖掉。
通常,我们的持久类是不修改的,而是新建它的扩展类(当然要继承持久类),因为当我们数据库修改字段或者添加字段后,又会重新生成代码,所以不建议动自动生成的持久类。
Mapper中的方法比较多,我们尽管拿来用就好,节省不少时间,同时也要扩展它。
本文链接:https://liuyanzhao.com/5927.html
一、需要的文件
- 生成代码需要的主jar包: mybatis-generator-core-1.3.2.jar
- mybatis jar包: mybatis-3.4.4.jar
- mysql连接: mysql-connector-java-5.1.41-bin.jar
- 配置文件: generatorConfig.xml (下图没有显示,我是放在 D 盘根目录)
- 运行文件:generatorConfig.java
如下图:总共必须5个文件
因为我们是给 SpringMVC_Mybatis 课程准备,所以这里也新建了 com.liuyanzhao.ssm 包
记得把 jar 包导入环境
二、代码如下
1、GeneratorSqlmap.java 运行程序的作用
代码也可以参考这里:http://www.mybatis.org/generator/running/runningWithJava.html
- import org.mybatis.generator.api.MyBatisGenerator;
- import org.mybatis.generator.config.Configuration;
- import org.mybatis.generator.config.xml.ConfigurationParser;
- import org.mybatis.generator.internal.DefaultShellCallback;
- import java.io.File;
- import java.util.ArrayList;
- import java.util.List;
- public class GeneratorSqlmap {
- public void generator() throws Exception{
- List<String> warnings = new ArrayList<String>();
- boolean overwrite = true;
- //File configFile = new File("generatorConfig.xml");似乎无效
- File configFile = new File("D:\\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();
- }
- }
- }
请注意第15行部分,不知道为什么 File 无法读取到相对路径的文件,很是纳闷。所以,我这里把 generatorConfig.xml 放到了 D 盘根目录
2、generatorConfig.xml
这个文件也可以参考:http://www.mybatis.org/generator/configreference/xmlconfig.html
- <?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="testTables" targetRuntime="MyBatis3">
- <commentGenerator>
- <!-- 是否去除自动生成的注释 true:是 : false:否 -->
- <property name="suppressAllComments" value="true" />
- </commentGenerator>
- <!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
- <jdbcConnection driverClass="com.mysql.jdbc.Driver"
- connectionURL="jdbc:mysql://localhost:3306/mybatis" userId="root"
- password="">
- </jdbcConnection>
- <!-- <jdbcConnection driverClass="oracle.jdbc.OracleDriver"
- connectionURL="jdbc:oracle:thin:@127.0.0.1:1521:yycg"
- userId="yycg"
- password="yycg">
- </jdbcConnection> -->
- <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL和NUMERIC类型解析为java.math.BigDecimal -->
- <javaTypeResolver>
- <property name="forceBigDecimals" value="false" />
- </javaTypeResolver>
- <!-- targetProject:生成PO类的位置,重要!! -->
- <javaModelGenerator targetPackage="com.liuyanzhao.ssm.po"
- targetProject="Mybatis_Generator/src">
- <!-- enableSubPackages:是否让schema作为包的后缀 -->
- <property name="enableSubPackages" value="false" />
- <!-- 从数据库返回的值被清理前后的空格 -->
- <property name="trimStrings" value="true" />
- </javaModelGenerator>
- <!-- targetProject:mapper映射文件生成的位置,重要!! -->
- <sqlMapGenerator targetPackage="com.liuyanzhao.ssm.mapper"
- targetProject="Mybatis_Generator/src">
- <property name="enableSubPackages" value="false" />
- </sqlMapGenerator>
- <!-- targetPackage:mapper接口生成的位置,重要!! -->
- <javaClientGenerator type="XMLMAPPER"
- targetPackage="com.liuyanzhao.ssm.mapper"
- targetProject="Mybatis_Generator/src">
- <property name="enableSubPackages" value="false" />
- </javaClientGenerator>
- <!-- 指定数据库表,要生成哪些表,就写哪些表,要和数据库中对应,不能写错! -->
- <table tableName="items"></table>
- <table tableName="orders"></table>
- <table tableName="orderdetail"></table>
- <table tableName="user"></table>
- </context>
- </generatorConfiguration>
注意:
1、把 generatorConfig.xml 放到 D 盘根目录,以和 java 文件中的路径对应
2、targetPackage 是包名,Mybatis_Generator/src 是项目名+ src 目录。windows下这里可以写 .\src
mac 下写 ./src 巨坑。
3、table 标签指定表名
三、运行程序
运行方法很简单,直接运行 GeneratorSqlmap.java,正常情况下可以看到
Process finished with exit code 0 的回复,如果弄了日志,还可以看到执行过程
如果你的出现 java.io.FileNotFoundException: xxxxxxxxxxxx (系统找不到指定的文件。)
一定是 xml 文件的路径和 java 文件中指定的不一致
最终,我们的 mapper 和 po 包下都会自动生成下面文件
注意:只能点一次运行,如果多次运行会重现重复代码,导致报下列错误
Result Maps collection already contains value for com.liuyanzhao.ssm.mapper.Items的原因及解决办法
四、补充
我们最好专门新建一个项目用来生成这些代码,然后将他们复制我们正在开发的项目中。而不是在项目中,生成,自动生成的会把原来的给覆盖掉。
通常,我们的持久类是不修改的,而是新建它的扩展类(当然要继承持久类),因为当我们数据库修改字段或者添加字段后,又会重新生成代码,所以不建议动自动生成的持久类。
Mapper中的方法比较多,我们尽管拿来用就好,节省不少时间,同时也要扩展它。
本文链接:https://liuyanzhao.com/5927.html
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏