Mybatis 逆向工程 自动生成代码
2024-08-24 14:01:28
Mybatis 可以通过一定的代码,自动生成包括mapper.xml、mapper.java、po等文件;
一、环境准备:
用到的JAR包如下:
文件只有两个:GenMain.java和generatorConfig.xml文件,都放在src目录下。
二、实现方法
1、新建一个JAVA项目,
GenMain.java(主文件)
import java.io.File;
import java.io.IOException;
import java.sql.SQLException;
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.InvalidConfigurationException;
import org.mybatis.generator.exception.XMLParserException;
import org.mybatis.generator.internal.DefaultShellCallback; public class GenMain {
public static void main(String[] args) {
List<String> warnings = new ArrayList<String>();
boolean overwrite = true;
String genCfg = "generatorConfig.xml";
File configFile = new File(GenMain.class.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();
}
}
}
配置文件: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>
<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="123456">
</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.itheima.mybatis.po"
targetProject=".\src">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
<!-- 从数据库返回的值被清理前后的空格 -->
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- targetProject:mapper映射文件生成的位置 -->
<sqlMapGenerator targetPackage="com.itheima.mybatis.mapper"
targetProject=".\src">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
</sqlMapGenerator>
<!-- targetPackage:mapper接口生成的位置 -->
<javaClientGenerator type="XMLMAPPER"
targetPackage="com.itheima.mybatis.mapper"
targetProject=".\src">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
</javaClientGenerator>
<!-- 指定数据库表 -->
<table schema="" tableName="user"></table>
<table schema="" tableName="orders"></table>
<table schema="" tableName="orderdetail"></table>
<table schema="" tableName="items"></table> <!-- 有些表的字段需要指定java类型
<table schema="" tableName="">
<columnOverride column="" javaType="" />
</table> -->
</context>
</generatorConfiguration>
数据库基本配置和生成文件的目录,都在上述文件中配置;
最新文章
- Java使用代理服务器
- php构造方法与析构方法
- Swift 语法
- 【poj3141】 Distant Galaxy
- sqoop与mysql之间中文乱码
- ios中webservice报文的拼接
- Blending(融合)
- C++中标准容器Vector,元素操作.insert()小结
- shape的属性
- [BZOJ 2243] [SDOI 2011] 染色 【树链剖分】
- mysql和mysqli的区别
- html系列教程--header head iframe img
- 首页导航点击A连接跳转并添加上背景色,
- Head First设计模式之迭代器模式
- junit测试延伸--方法的重复测试
- 【原创】自己动手实现JDK动态代理
- java界面--WePush-master 项目跑起来 -碰到的问题
- JMeter-性能测试监控(解决.sh文件的启动)
- C#、winform、wpf将类控件放进工具箱里
- Python变量和常量
热门文章
- windows SFC(System File Checker) 命令的使用
- 刷新神经网络新深度:ImageNet计算机视觉挑战赛微软中国研究员夺冠
- JavaScript里面向对象的继承:构造函数";继承";的六种方法
- Docker解析及轻量级PaaS平台演练(二)--Docker的一些简单命令
- Kafka查看偏移量报错:WARN WARNING: ConsumerOffsetChecker is deprecated and will be dropped in releases following 0.9.0. Use ConsumerGroupCommand instead.
- Nginx 报错413 Request Entity Too Large 上传文件过大
- How to simplify a PHP code with the help of the fa&#231;ade pattern?
- Tomcat:IOException while loading persisted sessions: java.io.EOFException 解决
- webpack入门学习总结
- Python——在Unicode和普通字符串之间转换