开发工具:Mybatis.Plus.插件三种方式的逆向工程

开发工具:Mybatis.Plus.插件三种方式的逆向工程

本文源码:GitHub·点这里 || GitEE·点这里

一、逆向工程简介

在Java开发中,持久层最常用的框架就是mybatis,该框架需要编写sql语句,mybatis官方提供逆向工程,可以把数据表自动生成执行所需要的基础代码,例如:mapper接口,sql映射文件,pojo实体类等,避免基础代码维护的繁杂过程。

<span>开发工具:Mybatis.Plus.插件三种方式的逆向工程</span>

在实际的使用中,常用的逆向工程方式如上,mybatis框架,mybatis-plus框架,插件方式。

二、Mybatis方式

1、基础描述

基于xml配置的方式,生成mybatis基础代码,包括mapper接口,Mapper映射文件,pojo实体类,PojoExample条件工具类。

2、配置文件

注意这里的targetProject需要配置自定义路径位置。

<?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"/>
			<property name="suppressDate" value="false"/>
			<!-- 是否添加数据表中字段的注释 true:是 : false:否 -->
			<property name="addRemarkComments" value="true"/>
		</commentGenerator>

		<!--数据库的信息:驱动类、连接地址、用户名、密码 -->
		<jdbcConnection driverClass="com.mysql.jdbc.Driver"
			connectionURL="jdbc:mysql://localhost:3306/defined-log?tinyInt1isBit=false"
			userId="root" password="123456">
		</jdbcConnection>

		<!--
			默认false,把JDBC decimal 和 numeric 类型解析为 Integer
		    设置true时把JDBC decimal 和 numeric 类型解析为BigDecimal
		-->
		<javaTypeResolver>
			<property name="forceBigDecimals" value="false" />
		</javaTypeResolver>

		<!-- 生成POJO类的位置 -->
		<javaModelGenerator targetPackage="com.generator.mybatis.pojo"
			targetProject="存放路径">
			<property name="enableSubPackages" value="true" />
			<property name="trimStrings" value="true" />
		</javaModelGenerator>

		<!-- 生成Mapper映射文件的位置 -->
		<sqlMapGenerator targetPackage="com.generator.mybatis.xml"
			targetProject="存放路径">
			<property name="enableSubPackages" value="true" />
		</sqlMapGenerator>

		<!-- 生成Mapper接口的位置 -->
		<javaClientGenerator type="XMLMAPPER" targetPackage="com.generator.mybatis.mapper"
			targetProject="存放路径">
			<property name="enableSubPackages" value="true" />
		</javaClientGenerator>

		<!-- 指定数据库表 -->
		<table schema="" tableName="dt_defined_log" domainObjectName="DefinedLog"/>

	</context>
</generatorConfiguration>

3、启动类

读取配置文件,并执行。

public class GeneratorMybatis {

    public void generator() throws Exception {
        List<String> warnings = new ArrayList<String>();
        boolean overwrite = true;
        File configFile = Resources.getResourceAsFile("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 {
            GeneratorMybatis generatorMybatis = new GeneratorMybatis();
            generatorMybatis.generator();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

三、MybatisPlus方式

1、基础描述

MybatisPlus相比Mybatis提供更多增强的能力,单表操作基本都封装好了,所以生成的mapper映射文件简洁很多,需要注意ServiceImpl关键类和BaseMapper接口。

2、核心启动类

这里的配置可以基于很多自定义的策略,案例生成的代码已经传到仓库,可以自行下载查看。

public class GeneratorMybatisPlus {

    public static void main(String[] args) {
        // 代码生成器
        AutoGenerator autoGenerator = new AutoGenerator();
        // 全局配置
        GlobalConfig globalConfig = new GlobalConfig();
        //生成文件的输出目录
        String path="存放路径";
        globalConfig.setOutputDir(path);
        // Author设置作者
        globalConfig.setAuthor("mybatis-plus");
        // 文件覆盖
        globalConfig.setFileOverride(true);
        // 生成后打开文件
        globalConfig.setOpen(false);
        // 自定义文件名风格,%s自动填充表实体属性
        globalConfig.setMapperName("%sMapper");
        globalConfig.setXmlName("%sMapper");
        globalConfig.setServiceName("%sDao");
        globalConfig.setServiceImplName("%sDaoImpl");
        globalConfig.setEntityName("%s");
        globalConfig.setControllerName("%sController");
        autoGenerator.setGlobalConfig(globalConfig);

        // 数据源配置
        DataSourceConfig dataSourceConfig = new DataSourceConfig();
        dataSourceConfig.setDbType(DbType.MYSQL);
        dataSourceConfig.setTypeConvert(new MySqlTypeConvert());
        dataSourceConfig.setUrl("jdbc:mysql://localhost:3306/defined-log?tinyInt1isBit=false");
        dataSourceConfig.setDriverName("com.mysql.jdbc.Driver");
        dataSourceConfig.setUsername("root");
        dataSourceConfig.setPassword("123456");
        autoGenerator.setDataSource(dataSourceConfig);

        // 包名配置
        PackageConfig packageConfig = new PackageConfig();
        // 父包和子包名分开处理
        packageConfig.setParent("com.generator.mybatis.plus");
        packageConfig.setController("web");
        packageConfig.setEntity("pojo");
        packageConfig.setMapper("mapper");
        packageConfig.setService("dao");
        packageConfig.setServiceImpl("dao.impl");
        autoGenerator.setPackageInfo(packageConfig);

        // 生成策略配置
        StrategyConfig strategy = new StrategyConfig();
        //设置命名格式
        strategy.setNaming(NamingStrategy.underline_to_camel);
        strategy.setColumnNaming(NamingStrategy.underline_to_camel);
        // 实体是否为lombok模型,默认 false
        strategy.setEntityLombokModel(true);
        //生成 @RestController 控制器
        strategy.setRestControllerStyle(true);
        // 驼峰转连字符
        strategy.setControllerMappingHyphenStyle(true);
        //表和前缀处理
        strategy.setInclude("dt_defined_log".split(","));
        String[] tablePre = new String[]{"dt_"};
        strategy.setTablePrefix(tablePre);
        autoGenerator.setStrategy(strategy);
        // 执行,以上相关参数可以基于动态输入获取
        autoGenerator.execute();
    }
}

该方式是当前mybatis框架最流行的开发方式,代码会简洁很多。

四、插件工具

1、配置数据库

这里选择MySQL数据源,后续根据提示需要下载驱动配置。

<span>开发工具:Mybatis.Plus.插件三种方式的逆向工程</span>

2、连接配置

<span>开发工具:Mybatis.Plus.插件三种方式的逆向工程</span>

Url地址,账号,密码,获取连接。

3、插件使用

这里选择的是安装EasyCode插件。

<span>开发工具:Mybatis.Plus.插件三种方式的逆向工程</span>

根据配置,生成逆向工程文件,整体思路和上述两种方式一致。

五、源代码地址

GitHub·地址
https://github.com/cicadasmile/data-manage-parent
GitEE·地址
https://gitee.com/cicadasmile/data-manage-parent

推荐阅读:编程体系整理

序号 项目名称 GitHub地址 GitEE地址 推荐指数
01 Java描述设计模式,算法,数据结构 GitHub·点这里 GitEE·点这里 ☆☆☆☆☆
02 Java基础、并发、面向对象、Web开发 GitHub·点这里 GitEE·点这里 ☆☆☆☆
03 SpringCloud微服务基础组件案例详解 GitHub·点这里 GitEE·点这里 ☆☆☆
04 SpringCloud微服务架构实战综合案例 GitHub·点这里 GitEE·点这里 ☆☆☆☆☆
05 SpringBoot框架基础应用入门到进阶 GitHub·点这里 GitEE·点这里 ☆☆☆☆
06 SpringBoot框架整合开发常用中间件 GitHub·点这里 GitEE·点这里 ☆☆☆☆☆
07 数据管理、分布式、架构设计基础案例 GitHub·点这里 GitEE·点这里 ☆☆☆☆☆
08 大数据系列、存储、组件、计算等框架 GitHub·点这里 GitEE·点这里 ☆☆☆☆☆
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/2700.html原文链接:https://javaforall.net

(0)
上一篇 2020年11月20日 下午4:04
下一篇 2020年11月20日 下午4:04


相关推荐

  • SpringFramework、SpringBoot、SpringCloud的区别

    SpringFramework、SpringBoot、SpringCloud的区别文章目录SpringSpringFrameworkSpringMVCSpringBootSpringCloud总结Spring是一个技术生态体系,是集大成者。它包含了SpringFramework、SpringBoot、SpringCloud等(还包括SpringClouddataflow、springdata、springintegration、springbatch、springsecurity、springhateoas),可以参考链接:https://spring.

    2022年6月1日
    37
  • windows7未能连接一个windows服务(无法连接网络)的解决方法

    windows7未能连接一个windows服务(无法连接网络)的解决方法今天下午不知道怎么搞的,就搞的无线不可以用了,出现了个 “windows7未能连接一个windows服务”问题,而且连eclipse都打不开了。晚上在网上找了一个方法,终于搞定了。方法:是重新安装了下360,然后它自动检测出来要修复LSP文件,然后就点击,再重启后就搞定了。下面这篇文章可能也有用:http://iecspace.ecjtu.org/posts/connect-to-w

    2022年5月14日
    56
  • 对dropout的理解详细版[通俗易懂]

    对dropout的理解详细版[通俗易懂]dropout可以让模型训练时,随机让网络的某些节点不工作(输出置零),也不更新权重(但会保存下来,下次训练得要用,只是本次训练不参与bp传播),其他过程不变。我们通常设定一个dropoutradio=p,即每个输出节点以概率p置0(不工作,权重不更新),假设每个输出都是独立的,每个输出都服从二项伯努利分布p(1-p),则大约认为训练时,只使用了(1-p)比例的输出,相当于每次训练一个子网络。测…

    2022年5月2日
    74
  • 电驴服务器图标显示叉叉,2012年6月最新电驴服务器列表及设置方法

    电驴服务器图标显示叉叉,2012年6月最新电驴服务器列表及设置方法最新的电驴服务器,使用电骡的朋友都很熟悉了,将下载文件解压到X:\eMule\config目录下(config目录位置需视实际情况定,请参考:http://emulefans.com/shared-usage/),重启eMule即可完成更新。由于网络环境不佳,需要不开迷惑协议才可以顺利连接某些大型ed2k服务器。(万不得已的情况下才需要,比如实在无法连接服务器)转自:http://www.qvo…

    2022年7月15日
    21
  • mysql的innodb与myisam(oracle主键和唯一索引的区别)

    InnoDB和MyISAM是很多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,5.7之后就不一样了1、事务和外键InnoDB具有事务,支持4个事务隔离级别,回滚,崩溃修复能力和多版本并发的事务安全,包括ACID。如果应用中需要执行大量的INSERT或UPDATE操作,则应该使用InnoDB,这样可以提高多用户并发操作的性能MyISAM管理非事务表。它提供高速存储和检索,以及全文搜索…

    2022年4月14日
    76
  • 2进制,8进制,10进制,16进制在python中的表示方法和互相转换函数

    2进制,8进制,10进制,16进制在python中的表示方法和互相转换函数2 进制 满 2 进 1 nbsp 0b108 进制 满 8 进 1 nbsp 0o1010 进制 满 10 进 1 nbsp 1016 进制 满 16 进 1 nbsp 0x10 时间满 60 进 1bin nbsp 转 2 进制方法 int nbsp 转 10 进制方法 oct nbsp 转 8 进制方法 hex nbsp 转 16 进制方法 gt gt gt bin 20 0b10100 gt gt gt bin 0o45 0b gt amp

    2026年3月18日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号