Mybatis Plus插件三种方式的逆向工程的使用

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

一、逆向工程简介

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

在实际的使用中,常用的逆向工程方式如上,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数据源,后续根据提示需要下载驱动配置。

2、连接配置

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

3、插件使用

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

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

五、源代码地址

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

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

到此这篇关于Mybatis Plus插件三种方式的逆向工程的使用的文章就介绍到这了,更多相关Mybatis Plus 逆向工程内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • springboot整合mybatis-plus逆向工程的实现

    MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发.提高效率而生.官方文档 代码生成器 AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity.Mapper.Mapper XML.Service.Controller 等各个模块的代码,极大的提升了开发效率. mybatis-plus是根据数据库表来生成对应的实体类,首先我们创建数据库表Us

  • Mybatis Plus插件三种方式的逆向工程的使用

    本文源码:GitHub·点这里 || GitEE·点这里 一.逆向工程简介 在Java开发中,持久层最常用的框架就是mybatis,该框架需要编写sql语句,mybatis官方提供逆向工程,可以把数据表自动生成执行所需要的基础代码,例如:mapper接口,sql映射文件,pojo实体类等,避免基础代码维护的繁杂过程. 在实际的使用中,常用的逆向工程方式如上,mybatis框架,mybatis-plus框架,插件方式. 二.Mybatis方式 1.基础描述 基于xml配置的方式,生成mybatis

  • Mybatis批量更新三种方式的实现

    Mybatis实现批量更新操作 方式一: <update id="updateBatch" parameterType="java.util.List"> <foreach collection="list" item="item" index="index" open="" close="" separator=";">

  • MyBatis批量插入的三种方式比较总结

    前言 数据库使用的是SQLServer,JDK版本1.8,运行在SpringBoot环境下 对比3种可用的方式 反复执行单条插入语句 xml拼接sql 批处理执行 先说结论:少量插入请使用反复插入单条数据,方便.数量较多请使用批处理方式.(可以考虑以有需求的插入数据量 20条左右为界吧,在我的测试和数据库环境下耗时都是百毫秒级的,方便最重要). 无论何时都不用xml拼接sql的方式. 代码 拼接SQL的xml newId()是sqlserver生成UUID的函数,与本文内容无关 <insert

  • Spring整合MyBatis的三种方式

    1.整合之前的环境准备 导入相关的jar包 Junit测试 <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> MyBatis <dependency> <groupId

  • Springboot Mybatis-Plus数据库单元测试实战(三种方式)

      单元测试长久以来是热门话题,本文不会讨论需不需要写单测,可以看看参考资料1,我个人认为写好单测应该是每个优秀开发者必备的技能,关于写单测的好处在这里我就不展开讨论了,快速进入本文着重讨论的话题,如何写好数据库单测.   为什么要写数据库单测? 相信大家是不是有这样类似的经历,在写完复杂的sql语句后,自信满满的提测,发现很大一部分Bug都是因为sql语句出现问题了,要么少写逗号,要么漏了字段,悔不当初哇,为啥写完不多测测呢!   没关系!这就教你如何写数据库单测,让你轻松告别数据库相关bug

  • Java 中责任链模式实现的三种方式

    责任链模式 责任链模式的定义:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系, 将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理他为止.这里就不再过多的介绍什么是责任链模式,主要来说说java中如何编写.主要从下面3个框架中的代码中介绍. servlet中的filter dubbo中的filter mybatis中的plugin 这3个框架在实现责任链方式不尽相同. servlet中的Filter servlet中分别定义了一个 Filter和Filter

  • iOS开发中UIWebView的加载本地数据的三种方式

    UIWebView是IOS内置的浏览器,可以浏览网页,打开文档 html/htm pdf docx txt等格式的文件. safari浏览器就是通过UIWebView做的. 服务器将MIME的标识符等放入传送的数据中告诉浏览器使用那种插件读取相关文件. uiwebview加载各种本地文件(通过loadData方法): UIWebView加载内容的三种方式: 1 加载本地数据文件 指定文件的MIMEType 编码格式使用@"UTF-8" 2加载html字符串(可以加载全部或者部分html

  • Struts 2中实现Ajax的三种方式

    Ajax本质上和普通的HTTP请求是一样的,只不过普通的HTTP请求是给人看的,而Ajax请求是给JS代码去用的. 所以Ajax请求的页面一般比普通的HTTP请求的响应内容还要简单,可能是一个页面的一部分,也可能是xml.json等结构化的数据,还可能是一个简单的字符串. 所以,在Struts 2中使用Ajax,Action一般就不会调用一个jsp视图来显示了(如果Ajax请求内容是页面的一部分也可能调用jsp视图),而是通过一些其他的方式. 下面介绍了三种方法,用于Action实现Ajax请求

  • vue请求数据的三种方式

    请求数据的方式: vue-resource 官方提供的 vue的一个插件 axios fetch-jsonp 一,vue-resource请求数据 介绍:vue-resource请求数据方式是官方提供的一个插件 使用步骤: 1.安装vue-resource模块 cnpm install vue-resource --save 加--save是为了在package.json中引用,表示在生产环境中使用.因为我们在日常开发中,如果我们要打包代码给其他人或者上传到github,又或者要发布代码时,pa

  • 浅谈Flutter解析JSON三种方式

    Dart实体类格式 class CategoryMo { String name; int count; CategoryMo({this.name, this.count}); //将map转成mo CategoryMo.fromJson(Map<String, dynamic> json) { name = json['name']; count = json['count']; } //将mo转成map,可缺省 Map<String, dynamic> toJson() {

随机推荐