Mybatis 逆向工程
【摘要】 逆向工程通常包括由数据库的表生成 Java代码和通过 Java代码生成数据库表。而Mybatisd的逆向工程是指由数据库表生成 Java 代码。程序员需要自己编写Mybaits 的SQL语句,但是Mybatis官方提供逆向工程可以针对单表自动生成Mybaits执行所需要的代码首先在gitgua下下载jar:https://github.com/mybatis/generator/releas...
逆向工程通常包括由数据库的表生成 Java代码和通过 Java代码生成数据库表。而Mybatisd的逆向工程是指由数据库表生成 Java 代码。
程序员需要自己编写Mybaits 的SQL语句,但是Mybatis官方提供逆向工程可以针对单表自动生成Mybaits执行所需要的代码
首先在gitgua下下载jar:https://github.com/mybatis/generator/releases
然后需要在pom.xml中配置
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.4.0</version>
</dependency>
导入或引用数据表:
/*
Navicat MySQL Data Transfer
Source Server : 0.30
Source Server Version : 50727
Source Host : localhost:3307
Source Database : usr
Target Server Type : MYSQL
Target Server Version : 50727
File Encoding : 65001
Date: 2022-08-12 18:53:32
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for button
-- ----------------------------
DROP TABLE IF EXISTS `button`;
CREATE TABLE `button` (
`id` bigint(20) unsigned NOT NULL COMMENT '主键',
`menu_id` bigint(20) unsigned NOT NULL COMMENT '菜单id',
`code` varchar(11) NOT NULL COMMENT '编码',
`name` varchar(11) NOT NULL COMMENT '名称',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='按钮表';
-- ----------------------------
-- Table structure for menu
-- ----------------------------
DROP TABLE IF EXISTS `menu`;
CREATE TABLE `menu` (
`id` bigint(20) unsigned NOT NULL COMMENT '主键',
`name` varchar(11) NOT NULL COMMENT '名称',
`sort_no` smallint(5) unsigned NOT NULL DEFAULT '10' COMMENT '排序号',
`parent_id` bigint(20) unsigned NOT NULL COMMENT '父节点id',
`icon` varchar(200) DEFAULT NULL COMMENT '图标',
`remark` varchar(20) DEFAULT NULL COMMENT '备注',
`url` varchar(60) DEFAULT NULL COMMENT '菜单链接',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='菜单表';
-- ----------------------------
-- Table structure for org
-- ----------------------------
DROP TABLE IF EXISTS `org`;
CREATE TABLE `org` (
`id` bigint(20) unsigned NOT NULL COMMENT '主键id',
`name` varchar(50) NOT NULL COMMENT '组织机构名称',
`parent_id` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '上级机构id',
`level` smallint(5) unsigned NOT NULL DEFAULT '1' COMMENT '树节点层级',
`node_path` varchar(512) NOT NULL COMMENT '节点路径',
`status` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '状态值;启用1是0否',
`sort_no` smallint(5) unsigned NOT NULL DEFAULT '10' COMMENT '排序号;规则升序',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='组织机构表';
-- ----------------------------
-- Table structure for role
-- ----------------------------
DROP TABLE IF EXISTS `role`;
CREATE TABLE `role` (
`id` bigint(20) unsigned NOT NULL COMMENT '主键',
`name` varchar(20) NOT NULL COMMENT '名称',
`type` tinyint(3) unsigned DEFAULT NULL COMMENT '类型;2菜单3按钮4机构',
`remark` varchar(20) DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色表';
-- ----------------------------
-- Table structure for role_ref_button
-- ----------------------------
DROP TABLE IF EXISTS `role_ref_button`;
CREATE TABLE `role_ref_button` (
`id` bigint(20) unsigned NOT NULL COMMENT '主键',
`role_id` bigint(20) unsigned NOT NULL COMMENT '角色id',
`button_id` bigint(20) unsigned NOT NULL COMMENT '按钮id',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色按钮关联表';
-- ----------------------------
-- Table structure for role_ref_menu
-- ----------------------------
DROP TABLE IF EXISTS `role_ref_menu`;
CREATE TABLE `role_ref_menu` (
`id` bigint(20) unsigned NOT NULL COMMENT '主键',
`role_id` bigint(20) unsigned NOT NULL COMMENT '角色id',
`menu_id` bigint(20) unsigned NOT NULL COMMENT '菜单id',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色菜单关联表';
-- ----------------------------
-- Table structure for role_ref_org
-- ----------------------------
DROP TABLE IF EXISTS `role_ref_org`;
CREATE TABLE `role_ref_org` (
`id` bigint(20) unsigned NOT NULL COMMENT '主键',
`role_id` bigint(20) unsigned NOT NULL COMMENT '角色id',
`org_id` bigint(20) unsigned NOT NULL COMMENT '机构id',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色机构关联表';
-- ----------------------------
-- Table structure for role_ref_user
-- ----------------------------
DROP TABLE IF EXISTS `role_ref_user`;
CREATE TABLE `role_ref_user` (
`id` bigint(20) unsigned NOT NULL COMMENT '主键',
`role_id` bigint(20) unsigned NOT NULL COMMENT '角色id',
`user_id` bigint(20) unsigned NOT NULL COMMENT '用户id',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色用户关联表';
-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` bigint(20) unsigned NOT NULL COMMENT '主键',
`username` varchar(20) NOT NULL COMMENT '用户名',
`cname` varchar(20) NOT NULL COMMENT '中文名',
`password` varchar(40) NOT NULL COMMENT '密码',
`id_number` char(18) CHARACTER SET utf8mb4 COLLATE utf8mb4_icelandic_ci DEFAULT NULL COMMENT '身份证号',
`phone_number` char(11) DEFAULT NULL COMMENT '手机号',
`star_level` tinyint(3) unsigned DEFAULT '1' COMMENT '星级;星级1-5',
`education` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '学历;1初中2高中3中技4中专5大专6专科7本科8本科(函)9大学',
`skill_level` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '技能等级;1初级工2中级工3高级工4技师5高级技师6助理工程师7工程师8高级工程师',
`job_title` varchar(20) NOT NULL DEFAULT '接触网工' COMMENT '岗位职务',
`professional` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '专业;1接触网专业',
`start_work_date` datetime NOT NULL COMMENT '参加工作时间',
`status` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '状态值;1启用0禁用',
`updated` datetime NOT NULL COMMENT '更新时间',
`org_id` bigint(20) unsigned DEFAULT NULL COMMENT '机构id',
`sort` smallint(5) DEFAULT NULL COMMENT '排序号',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_username` (`username`),
UNIQUE KEY `uk_job_number` (`id_number`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表';
-- ----------------------------
-- Table structure for user_ref_org
-- ----------------------------
DROP TABLE IF EXISTS `user_ref_org`;
CREATE TABLE `user_ref_org` (
`id` bigint(20) unsigned NOT NULL COMMENT '主键',
`user_id` bigint(20) unsigned NOT NULL COMMENT '用户id',
`org_id` bigint(20) unsigned NOT NULL COMMENT '机构id',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户机构关联表';
新建一个genertorConfig逆向生成的配置文件
<?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="DB2Tables" targetRuntime="MyBatis3"> <commentGenerator> <property name="suppressAllComments" value="true" /> </commentGenerator> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/test" userId="root" password="root" />
<!-- 默认为false,把JDBC DECIMAL 和NUMERIC类型解析为Integer,为true时 把JDBC DECIMAL 和NUMERIC类型解析为java.math.BigDecimal -->
<javaTypeResolver>
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!-- targetProject:生成POJO类的位置 -->
<javaModelGenerator
targetPackage="com.tt.pojo" targetProject=".\src">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
<!-- 从数据库返回的值被清理前后的空格 -->
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- targetProject:mapper映射文件生成的位置 -->
<sqlMapGenerator targetPackage="com.tt.mapper"
targetProject=".\src">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
</sqlMapGenerator>
<!-- targetProject:mapper接口生成的的位置 -->
<javaClientGenerator type="XMLMAPPER"
targetPackage="com.tt.mapper" targetProject=".\src">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
</javaClientGenerator>
<!-- 指定数据表 -->
<table tableName="website"></table>
<table tableName="student"></table>
<table tableName="studentcard"></table>
<table tableName="user"></table>
</context>
</generatorConfiguration>
创建 test 类执行生成代码
public class GeneratorSqlmap {
public void generator() throws Exception {
List<String> warnings = new ArrayList<String>();
boolean overwrite = true;
// 指定配置文件
File configFile = new File("./config/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);
}
// 执行main方法以生成代码
public static void main(String[] args) {
try {
GeneratorSqlmap generatorSqlmap = new GeneratorSqlmap();
generatorSqlmap.generator();
} catch (Exception e) {
e.printStackTrace();
}
}
}
OK 搞定
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)