MyBatis Plus Generator根据表生成java代码使用教程

avatar 2021年07月09日16:29:13 0 94 views

生成代码我们早期的时候用过 mybatis-generator, 后面又用过 idea 的EasyCode 插件来生成代码。

最近几年使用 MyBatis Plus 比较多,发现其也提供了代码生成器插件,用起来很舒服,到时候准备下半年给其他朋友做项目都用这个插件快速生成基本的增删改查代码了。

只需要创建表,然后可以快速生成 model, dao,  mapper xml, service, controller,并且 service 继承了 BaseService,让我们 dao 和 service 层不必写简单的增删改查方法了。

废话不多说,直接上代码。

代码地址:https://github.com/saysky/MyBatisPlusGeneratorDemo

一、引入 maven 依赖

需要引入mybatis-plus-generator 和 freemark 依赖

<!-- mybatis-plus -->
<dependency>
	<groupId>com.baomidou</groupId>
	<artifactId>mybatis-plus-boot-starter</artifactId>
	<version>3.1.2</version>
</dependency>

<!-- 代码生成需要的包,需要freemarker支持 需排除jsqlparser依赖 否则会有分页插件jar包冲突-->
<dependency>
	<groupId>com.baomidou</groupId>
	<artifactId>mybatis-plus-generator</artifactId>
	<version>3.2.0</version>
	<exclusions>
		<exclusion>
			<groupId>com.github.jsqlparser</groupId>
			<artifactId>jsqlparser</artifactId>
		</exclusion>
	</exclusions>
</dependency>
<!--        freemark-->
<dependency>
	<groupId>org.freemarker</groupId>
	<artifactId>freemarker</artifactId>
	<version>2.3.28</version>
</dependency>

 

二、生成器java代码

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
//import com.liuyanzhao.sens.controller.base.BaseController;

/**
 * @author liuyanzhao
 * @since 2021/7/9
 */
public class GeneratorTest
{

    public static final String DB_NAME = "db_blog"; // author里显示的名字
    public static final String DB_USER = "root"; // 数据库用户名
    public static final String DB_PASSWORD = "root"; // 数据库密码
    public static final String DB_DRIVER = "com.mysql.cj.jdbc.Driver"; // 驱动包,MySQL5 需要去掉中间的.cj
    public static final String[] TABLE_NAME_ARR = {"t_user", "t_article"}; // 需要生成代码的表名

    public static final String AUTHOR = "liuyanzhao"; // author里显示的名字
    public static final String PACKAGE_PREFIX = "com.liuyanzhao.sens"; // 项目包名前缀

    @SuppressWarnings("deprecation")
    public static void main(String[] args)
    {

        // 1、创建代码生成器
        AutoGenerator mpg = new AutoGenerator();

        // 2、全局配置
        mpg.setTemplateEngine(new FreemarkerTemplateEngine()); // 设置模板
        GlobalConfig gc = new GlobalConfig();
        String projectPath = System.getProperty("user.dir");
        gc.setOutputDir(projectPath + "/src/main/java");
        gc.setAuthor(AUTHOR);
        gc.setOpen(false); // 生成后是否打开资源管理器
        gc.setFileOverride(false); // 重新生成时文件是否覆盖
        // gc.setServiceName("%sService"); //去掉Service接口的首字母I。如果需要生成的service接口类最前面有I,这把这行注释掉
        gc.setMapperName("%sDao");
        gc.setIdType(IdType.AUTO); // 主键策略, UUID使用IdType.UUID, 自增用AUTO
        gc.setDateType(DateType.ONLY_DATE);// 定义生成的实体类中日期类型
        gc.setSwagger2(false);// 开启Swagger2模式

        mpg.setGlobalConfig(gc);

        // 3、数据源配置
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setUrl("jdbc:mysql://localhost:3306/" + DB_NAME + "?serverTimezone=GMT%2b8&characterEncoding=UTF-8&useSSL=false");
        dsc.setDriverName(DB_DRIVER);
        dsc.setUsername(DB_USER);
        dsc.setPassword(DB_PASSWORD);
        dsc.setDbType(DbType.MYSQL);
        mpg.setDataSource(dsc);

        // 4、包配置
        PackageConfig pc = new PackageConfig();
        //		pc.setModuleName("模块名"); // 模块名,如果需要按模块生成,则打开这行代码,否则注释掉这行
        pc.setParent(PACKAGE_PREFIX);
        pc.setController("controller");
        pc.setEntity("model");
        pc.setService("service");
        pc.setMapper("dao");
        mpg.setPackageInfo(pc);

        // 5、策略配置
        StrategyConfig strategy = new StrategyConfig();
        strategy.setInclude(TABLE_NAME_ARR); // 生成的表
        strategy.setNaming(NamingStrategy.underline_to_camel);// 数据库表映射到实体的命名策略
        strategy.setTablePrefix("t_"); // 生成实体时去掉表前缀
        strategy.setColumnNaming(NamingStrategy.underline_to_camel);// 数据库表字段映射到实体的命名策略
        strategy.setEntityLombokModel(false); // lombok 模型 @Accessors(chain = true) setter链式操作
        strategy.setEntityBooleanColumnRemoveIsPrefix(true);//去掉布尔值的is_前缀
        strategy.setRestControllerStyle(true); // restful api风格控制器
        //strategy.setControllerMappingHyphenStyle(true); // url中驼峰转连字符, 默认是驼峰命名
        // 设置controller父类
//        strategy.setSuperControllerClass(BaseController.class.getName());
        mpg.setStrategy(strategy);

        // 6、执行
        mpg.execute();
    }
}

 

 

 

  • 微信
  • 交流学习,有偿服务
  • weinxin
  • 博客/Java交流群
  • 资源分享,问题解决,技术交流。群号:590480292
  • weinxin
avatar

发表评论

avatar 登录者:匿名
可以匿名评论或者登录后台评论,评论回复后会有邮件通知

  

已通过评论:0   待审核评论数:0