方式一:作为 Maven Plugin 
mvn mybatis-generator:generate
使用场景: 对逆向工程定制较多,项目工程结构比较单一的情况

POM文件下需要以下插件


<build><plugins><plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-maven-plugin</artifactId><version>1.4.0</version><configuration><verbose>true</verbose><overwite>true</overwite></configuration></plugin></plugins>
</build>

运行mvn命令两种方式

1),执行项目下的Plugins插件,Plugins->mybatis-generatro->mybats-generator.generate,

执行完成会自动生成相关文件

2):Run/Debug Configurations配置mvn命令,执行run

1. working directory 指定项目所在的路径;

2. Command line:  mybatis-generator:generate;

3. 配置完成后运行,会自动生成文件

此过程常见错误:

一、错误提示:Unexpected exception encountered during query.

java.sql.SQLException: Unexpected exception encountered during query.

解决方法:

更换使用新版的mysql-connector-java即可。

二:  Java 程序 使用 XML 配置文件

java程序

package com.learn.mybatis;import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.exception.InvalidConfigurationException;
import org.mybatis.generator.exception.XMLParserException;
import org.mybatis.generator.internal.DefaultShellCallback;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.util.ResourceUtils;//@RunWith(SpringJUnit4ClassRunner.class)
//@ContextConfiguration("classpath:applicationContext.xml")
public class MybatisSpringTest {    private SqlSessionFactory sqlSessionFactory;@Beforepublic void init() throws IOException {String resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);// 1.读取mybatis配置文件创SqlSessionFactorysqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);inputStream.close();}@Testpublic void mybatisGeneratorTest() throws FileNotFoundException{List<String> warnings = new ArrayList<String>();  boolean overwrite = true;String genCfg = "generatorConfig.xml";  File configFile = new File(getClass().getClassLoader().getResource(genCfg).getFile());ConfigurationParser cp = new ConfigurationParser(warnings);  Configuration config = null;  try {  config = cp.parseConfiguration(configFile);  } catch (IOException e) {  e.printStackTrace();  } catch (XMLParserException e) {  e.printStackTrace();  }  DefaultShellCallback callback = new DefaultShellCallback(overwrite);  MyBatisGenerator myBatisGenerator = null;  try {  myBatisGenerator = new MyBatisGenerator(config, callback, warnings);  } catch (InvalidConfigurationException e) {  e.printStackTrace();  }  try {  myBatisGenerator.generate(null);  } catch (SQLException e) {  e.printStackTrace();  } catch (IOException e) {  e.printStackTrace();  } catch (InterruptedException e) {  e.printStackTrace();  }  }
}

三:从命令提示符 使用 XML 配置文件 
     java -jar mybatis-generator-core-x.x.x.jar -configfile generatorConfig.xml

java -Dfile.encoding=UTF-8 -jar mybatis-generator-core-1.3.5.jar -configfile generatorConfig.xml -overwrite

使用场景:对逆向工程定制较少,项目工程结构比较复杂的情况

手动新建目录结构

工程结构:

mybatis代码生成器配置文件,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><!-- 加载数据库驱动 --><classPathEntry location="mysql-connector-java-8.0.25.jar" /><!-- context:生成一组对象的环境 id:必选,上下文id,用于在生成错误时提示 defaultModelType:指定生成对象的样式 1,conditional:类似hierarchical;2,flat:所有内容(主键,blob)等全部生成在一个对象中,推荐使用; 3,hierarchical:主键生成一个XXKey对象(key class),Blob等单独生成一个对象,其他简单属性在一个对象中(record class) targetRuntime: 1,MyBatis3:默认的值,生成基于MyBatis3.x以上版本的内容,包括XXXBySample; 2,MyBatis3Simple:类似MyBatis3,只是不生成XXXBySample; --><context id="context1" targetRuntime="MyBatis3"   defaultModelType="flat"><!-- 生成的Java文件的编码 --><property name="javaFileEncoding" value="UTF-8"/><commentGenerator><!-- 是否去除自动生成的注释 true:是 : false:否 --><property name="suppressAllComments" value="false" /><!-- 阻止注释中包含时间戳 true:是 : false:否 --><property name="suppressDate" value="true" /><!--  注释是否包含数据库表的注释信息  true:是 : false:否 --><property name="addRemarkComments" value="true" /></commentGenerator><!--数据库连接的信息:驱动类、连接地址、用户名、密码 --><jdbcConnection driverClass="com.mysql.jdbc.Driver"connectionURL="jdbc:mysql://localhost:3306/runoob" userId="root" password="123" /><!-- java模型创建器,是必须要的元素   负责:1,key类(见context的defaultModelType);2,java类;3,查询类targetPackage:生成的类要放的包,真实的包受enableSubPackages属性控制;targetProject:目标项目,指定一个存在的目录下,生成的内容会放到指定目录中,如果目录不存在,MBG不会自动建目录--><javaModelGenerator targetPackage="com.enjoylearning.mybatis.entity" targetProject="src/main/java"><!-- 设置一个根对象,如果设置了这个根对象,那么生成的keyClass或者recordClass会继承这个类;在Table的rootClass属性中可以覆盖该选项注意:如果在key class或者record class中有root class相同的属性,MBG就不会重新生成这些属性了,包括:1,属性名相同,类型相同,有相同的getter/setter方法;--><property name="rootClass" value="com.enjoylearning.mybatis.entity.BaseEntity" /></javaModelGenerator><!-- 生成SQL map的XML文件生成器,targetPackage:生成的类要放的包,真实的包受enableSubPackages属性控制;targetProject:目标项目,指定一个存在的目录下,生成的内容会放到指定目录中,如果目录不存在,MBG不会自动建目录--><sqlMapGenerator targetPackage="." targetProject="src/main/resources/mapper"></sqlMapGenerator><!-- 对于mybatis来说,即生成Mapper接口,注意,如果没有配置该元素,那么默认不会生成Mapper接口 type:选择怎么生成mapper接口(在MyBatis3/MyBatis3Simple下):1,ANNOTATEDMAPPER:会生成使用Mapper接口+Annotation的方式创建(SQL生成在annotation中),不会生成对应的XML;2,MIXEDMAPPER:使用混合配置,会生成Mapper接口,并适当添加合适的Annotation,但是XML会生成在XML中;3,XMLMAPPER:会生成Mapper接口,接口完全依赖XML;注意,如果context是MyBatis3Simple:只支持ANNOTATEDMAPPER和XMLMAPPER-->      <javaClientGenerator targetPackage="com.learn.mybatis.mapper" targetProject="src/main/java" type="XMLMAPPER" /><!-- shema 数据库 tableName表明 % 代表数据库库所有表,如果单表填写表名 --><table schema="${jdbc_username}" tableName="%"   enableCountByExample="false"enableUpdateByExample="false" enableDeleteByExample="false"enableSelectByExample="false" selectByExampleQueryId="false"><generatedKey column="id" sqlStatement="MySql"/></table></context>
</generatorConfiguration>

执行命令结果如下:

常见错误:

java.sql.SQLException: Unknown initial character set index '255' received from server. Initial client character set can be forced via the 'characterEncoding' property.

更换使用新版的mysql-connector-java即可。我由5.1.18改成8.0.25就好了

怎么运行Mybatis代码生成器MGB相关推荐

  1. mybatis学习四(代码生成器MGB)

    目录 1.MyBatis Generator(MGB)简介 二.MGB核心API 三.MGB使用方式 3.1 Maven插件方式 3.2 java程序运行 1.MyBatis Generator(MG ...

  2. MyBatis代码生成器(逆向工程)MBG使用

    概述 我们前面的博文中了解了MyBatis的基本用法,也写了很多单表的CRUD方法,基本上每个表都需要用到这些方法,这些方法都很规范而且比较类似. 当数据库表的字段较少时,写起来还能接受,一旦字段过多 ...

  3. MyBatis复习笔记5:MyBatis代码生成器

    前言:做过几个项目之后深感代码生成器的便捷,有了它我们可以少写许多重复的.基础的代码,如基本的增删改查的代码,我们可以交给代码生成器生成,而我们只需要专注于业务逻辑上的代码即可. MyBatis Ge ...

  4. MyBatis代码生成器-Example讲解

    概述 在上篇博文 MyBatis代码生成器(逆向工程)MBG使用 中介绍了MBGZ的基本使用.我们知道在MBG的context中将targetRuntime配置为MyBatis3时,MBG会生成和Ex ...

  5. idea 配置mysql逆向_IDEA中Mybatis的MGB使用逆向工程配置的详细教程

    添加依赖 添加generatorConfig.xml文件 在maven的plugins中运行mybatis-generator插件 注意事项: (1).generatorConfig.xml文件需要放 ...

  6. 从命令行及java程序运行MyBatis Generator 1.3.x生成MyBatis3.x代码

    为什么80%的码农都做不了架构师?>>>    近期因为项目需要,调研了myBatis 3.x的使用,当然,顺便也就研究了一下使用Generator来通过逆向工程生成pojo,map ...

  7. 关于集成通用mapper的Mybatis代码生成器产生的model类注解

    主要是@Table.@Id.@GeneratedValue.@Column 4个注解 这四个注解都来自javax.persistence包,是Java持久层规范,单纯的Mybatis并不认识这四个注解 ...

  8. 运行mybatis时显示报错:Error updating database. Cause: java.sql.SQLException: Error setting driver on

    在运行mybatis测试类的时候,结果报错; Error updating database. Cause: java.sql.SQLException: Error setting driver o ...

  9. 使用Java运行MyBatis Generator

    使用Java运行MyBatis Generator 下载源码 建工程 运行mybatis generator 总结 使用Java运行MyBatis Generator 使用mybatis时经常要写与数 ...

最新文章

  1. 线程的同步-----Lock同步锁
  2. css文本换行_CSS样式更改——文本Content
  3. 三十七、下篇 | tkinter实现一个翻译软件
  4. Android(3_2)-----模仿微信界面:通讯录页面
  5. CodeForces - 91B Queue(单调队列+二分)
  6. qt 16进制字符串和十六进制数_Python字符串类型及其操作
  7. 用STATSVN统计公司SVN代码修改
  8. 电子商务c语言实训报告,中南民族大学电子商务C语言实验报告.doc
  9. Google 的 Angular 迫使我放弃了 Web 开发
  10. Android 音视频深入 十四 FFmpeg与OpenSL ES 播放mp3音乐,能暂停(附源码
  11. JS闭包中未使用的引用变量回收机制浅探
  12. Qt 2D绘图之一:基本图形绘制和渐变填充
  13. Windows环境下log4cxx的编译及使用(转载)
  14. VBS进行http请求及JSON数据的读取和生成
  15. 三个有用的SQL辅助工具
  16. 怎样快速将图片dpi修改为300?如何调整照片分辨率?
  17. Unexpandable Clocks不可扩展时钟 UG903
  18. SIM900/SIM900A 模块实现收发短信,打电话
  19. 小程序中自定义组件、父子传值的具体步骤(秒懂)
  20. Linux脚本shell字符串处理,基本都有了,看着搜吧

热门文章

  1. 芯片龙头股票遭青睐 恒大现身次新军工股!
  2. 虚拟机windows7安装启动MYSQL5.7
  3. 在线查看office文档
  4. java堆栈内存_关于 js 与 Java 堆栈内存的一些疑惑
  5. php shell地址,运用Shell 命令行获得本机IP地址
  6. 葡萄城活字格 Web 应用生成平台荣获软博会十佳优秀产品
  7. pe给水管施工方案详细介绍
  8. 如何理解前端工程化?
  9. 重复数据删除和压缩处理
  10. 盘后股价应声下跌1.54% 电信业“亚马逊“Twilio路在何方?