1、简介

  • MyBatis-Plus 代码生成器是一个强大的工具,它能够根据数据库表结构自动生成对应的实体类、Mapper接口、XML映射文件以及Service层代码。
  • 这个工具极大地简化了基于MyBatis框架的开发流程,提高了开发效率,尤其是在需要处理大量数据库表时。

2、主要特点

  • 自动化:代码生成器能够自动根据数据库表结构生成相应的Java代码,减少了手动编写重复代码的工作量。
  • 可配置性:通过配置文件或代码,可以灵活地指定生成代码的包路径、表名、字段名、模板等,满足不同项目的需求。
  • 模板支持:支持自定义代码模板,可以根据项目需求定制代码风格和结构。
  • 多数据库支持:支持多种数据库类型,如MySQL、Oracle、SQL Server等,只需配置相应的数据库连接信息即可。
  • 集成简单:可以轻松集成到现有的项目中,只需几行代码即可启动代码生成过程。

3、使用场景

  • 新项目搭建:在新项目开始时,可以使用代码生成器快速生成基础的CRUD代码,加快项目启动速度。
  • 表结构变更:当数据库表结构发生变化时,可以通过代码生成器更新对应的Java代码,保持代码与数据库的一致性。
  • 重复性工作:在需要编写大量相似CRUD操作的场景中,代码生成器可以显著减少重复劳动,提高开发效率。

4、使用流程

  1. 配置数据源:指定数据库类型、连接URL、用户名和密码等。
  2. 配置策略:选择需要生成代码的表,设置表名和字段名的命名策略等。
  3. 配置包信息:设置生成代码的包路径,包括实体类、Mapper接口、Service等。
  4. 配置模板:如果需要自定义代码风格,可以配置或创建自定义的代码模板。
  5. 执行生成:运行代码生成器,根据配置生成相应的Java代码。

5、配置使用

5.1 数据源配置(dataSource)

  • 类型:DataSourceConfig
  • 默认值:null

数据源配置用于指定需要生成代码的具体数据库。通过配置数据源,代码生成器能够连接到数据库并获取表结构信息,以便生成相应的代码。

示例配置:

DataSourceConfig dataSourceConfig = new DataSourceConfig();
dataSourceConfig.setDbType(DbType.MYSQL) // 设置数据库类型,如MySQL、Oracle等
    .setUrl("jdbc:mysql://localhost:3306/mybatis_plus") // 数据库连接URL
    .setUsername("root") // 数据库用户名
    .setPassword("password") // 数据库密码
    .setDriverName("com.mysql.cj.jdbc.Driver"); // 数据库驱动类名

5.2 数据库表配置(strategy)

  • 类型:StrategyConfig
  • 默认值:null

数据库表配置用于指定需要生成哪些表的代码或者排除哪些表。通过策略配置,可以灵活地控制代码生成的范围。

示例配置:

StrategyConfig strategyConfig = new StrategyConfig();
strategyConfig.setInclude("user", "order") // 指定需要生成代码的表名
    .setExclude("user_detail") // 排除不需要生成代码的表名
    .setEntityLombokModel(true) // 设置实体类使用Lombok模型
    .setRestControllerStyle(true); // 设置Controller使用REST风格

5.3 包名配置(packageInfo)

  • 类型:PackageConfig
  • 默认值:null

包名配置用于指定生成代码的包路径。通过配置包名,可以确保生成的代码放置在正确的目录结构中。

示例配置:

PackageConfig packageConfig = new PackageConfig();
packageConfig.setParent("com.example") // 设置父包名
    .setMapper("mapper") // 设置Mapper接口所在的子包名
    .setEntity("entity") // 设置实体类所在的子包名
    .setController("controller"); // 设置Controller所在的子包名

5.4 模板配置(template)

  • 类型:TemplateConfig
  • 默认值:null

模板配置允许自定义代码生成的模板,实现个性化操作。通过模板配置,可以定制生成代码的格式和内容。

示例配置:

TemplateConfig templateConfig = new TemplateConfig();
templateConfig.setXml(null) // 不生成XML文件
    .setController("templates/controller.java.vm") // 设置Controller模板路径
    .setEntity("templates/entity.java.vm") // 设置实体类模板路径
    .setMapper("templates/mapper.java.vm"); // 设置Mapper接口模板路径

5.5 全局策略配置(globalConfig)

  • 类型:GlobalConfig
  • 默认值:null

全局策略配置提供了一些全局的设置,如作者信息、生成路径等。

示例配置:

GlobalConfig globalConfig = new GlobalConfig();
globalConfig.setOutputDir("src/main/java") // 设置生成代码的输出目录
    .setAuthor("Your Name") // 设置作者信息
    .setOpen(false) // 设置生成后是否自动打开目录
    .setFileOverride(true); // 设置文件存在时是否覆盖

5.6 注入配置(injectionConfig)

  • 类型:InjectionConfig
  • 默认值:null

注入配置允许注入自定义参数等操作以实现个性化操作。通过注入配置,可以在代码生成过程中添加额外的逻辑。

示例配置:

InjectionConfig injectionConfig = new InjectionConfig() {
    // 自定义注入参数
    @Override
    public void initMap() {
        // to do nothing
    }

    // 自定义参数
    @Override
    public MappedStatement injectMappedStatement(MappedStatement ms, Configuration configuration, SqlSource sqlSource, String mapperId) {
        // 自定义注入逻辑
        return ms;
    }
};

 文章来源:MyBatis-Plus 🚀 为简化开发而生

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐