怎么运行Mybatis代码生成器MGB
方式一:作为 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相关推荐
- mybatis学习四(代码生成器MGB)
目录 1.MyBatis Generator(MGB)简介 二.MGB核心API 三.MGB使用方式 3.1 Maven插件方式 3.2 java程序运行 1.MyBatis Generator(MG ...
- MyBatis代码生成器(逆向工程)MBG使用
概述 我们前面的博文中了解了MyBatis的基本用法,也写了很多单表的CRUD方法,基本上每个表都需要用到这些方法,这些方法都很规范而且比较类似. 当数据库表的字段较少时,写起来还能接受,一旦字段过多 ...
- MyBatis复习笔记5:MyBatis代码生成器
前言:做过几个项目之后深感代码生成器的便捷,有了它我们可以少写许多重复的.基础的代码,如基本的增删改查的代码,我们可以交给代码生成器生成,而我们只需要专注于业务逻辑上的代码即可. MyBatis Ge ...
- MyBatis代码生成器-Example讲解
概述 在上篇博文 MyBatis代码生成器(逆向工程)MBG使用 中介绍了MBGZ的基本使用.我们知道在MBG的context中将targetRuntime配置为MyBatis3时,MBG会生成和Ex ...
- idea 配置mysql逆向_IDEA中Mybatis的MGB使用逆向工程配置的详细教程
添加依赖 添加generatorConfig.xml文件 在maven的plugins中运行mybatis-generator插件 注意事项: (1).generatorConfig.xml文件需要放 ...
- 从命令行及java程序运行MyBatis Generator 1.3.x生成MyBatis3.x代码
为什么80%的码农都做不了架构师?>>> 近期因为项目需要,调研了myBatis 3.x的使用,当然,顺便也就研究了一下使用Generator来通过逆向工程生成pojo,map ...
- 关于集成通用mapper的Mybatis代码生成器产生的model类注解
主要是@Table.@Id.@GeneratedValue.@Column 4个注解 这四个注解都来自javax.persistence包,是Java持久层规范,单纯的Mybatis并不认识这四个注解 ...
- 运行mybatis时显示报错:Error updating database. Cause: java.sql.SQLException: Error setting driver on
在运行mybatis测试类的时候,结果报错; Error updating database. Cause: java.sql.SQLException: Error setting driver o ...
- 使用Java运行MyBatis Generator
使用Java运行MyBatis Generator 下载源码 建工程 运行mybatis generator 总结 使用Java运行MyBatis Generator 使用mybatis时经常要写与数 ...
最新文章
- 线程的同步-----Lock同步锁
- css文本换行_CSS样式更改——文本Content
- 三十七、下篇 | tkinter实现一个翻译软件
- Android(3_2)-----模仿微信界面:通讯录页面
- CodeForces - 91B Queue(单调队列+二分)
- qt 16进制字符串和十六进制数_Python字符串类型及其操作
- 用STATSVN统计公司SVN代码修改
- 电子商务c语言实训报告,中南民族大学电子商务C语言实验报告.doc
- Google 的 Angular 迫使我放弃了 Web 开发
- Android 音视频深入 十四 FFmpeg与OpenSL ES 播放mp3音乐,能暂停(附源码
- JS闭包中未使用的引用变量回收机制浅探
- Qt 2D绘图之一:基本图形绘制和渐变填充
- Windows环境下log4cxx的编译及使用(转载)
- VBS进行http请求及JSON数据的读取和生成
- 三个有用的SQL辅助工具
- 怎样快速将图片dpi修改为300?如何调整照片分辨率?
- Unexpandable Clocks不可扩展时钟 UG903
- SIM900/SIM900A 模块实现收发短信,打电话
- 小程序中自定义组件、父子传值的具体步骤(秒懂)
- Linux脚本shell字符串处理,基本都有了,看着搜吧
热门文章
- 芯片龙头股票遭青睐 恒大现身次新军工股!
- 虚拟机windows7安装启动MYSQL5.7
- 在线查看office文档
- java堆栈内存_关于 js 与 Java 堆栈内存的一些疑惑
- php shell地址,运用Shell 命令行获得本机IP地址
- 葡萄城活字格 Web 应用生成平台荣获软博会十佳优秀产品
- pe给水管施工方案详细介绍
- 如何理解前端工程化?
- 重复数据删除和压缩处理
- 盘后股价应声下跌1.54% 电信业“亚马逊“Twilio路在何方?