MybatisPlus也能轻松生成三层架构代码?

58 阅读2分钟

👩🏽‍💻个人主页:阿木木AEcru

🔥 系列专栏:《Docker容器化部署系列》 《Java每日面筋》

💹每一次技术突破,都是对自我能力的挑战和超越。

一、前言

三层架构是一种将应用程序分为三个主要逻辑层的设计模式,旨在实现解耦、提高可维护性和可扩展性。这三个层分别是:

  1. 表示层(Presentation Layer):负责处理用户界面和展示数据,接收用户输入并将其转发到业务逻辑层处理。
  2. 业务逻辑层(Business Logic Layer):包含应用程序的业务规则和工作流程,处理表示层的请求并调用数据访问层进行数据操作。
  3. 数据访问层(Data Access Layer):与数据库或其他持久化存储交互,执行数据的CRUD(创建、读取、更新、删除)操作。

三层架构的流程图

下面是一个简化的三层架构流程图示例:

为什么使用三层架构?

  • 分离关注点:每个层只关注自己的职责,使得代码更加模块化。

  • 可维护性:由于层之间的独立性,修改一个层的代码不太可能影响到其他层。

  • 可测试性:业务逻辑层可以独立于表示层和数据访问层进行测试。

  • 可扩展性:可以更容易地扩展或替换某一层,而不影响其他层。

好啦!话不多说,也就简单的过一下一些概念。接下来就开始今天的正题啦!

二、效果图

三、Maven依赖


		<!--mybatis-->
		<dependency>
			<groupId>com.baomidou</groupId>
			<artifactId>mybatis-plus-boot-starter</artifactId>
			<version>3.5.3.1</version>
		</dependency>
		<!--mybatis plus extension,包含了mybatis plus core-->
		<dependency>
			<groupId>com.baomidou</groupId>
			<artifactId>mybatis-plus-extension</artifactId>
			<version>3.5.3.1</version>
		</dependency>

		<dependency>
			<groupId>com.baomidou</groupId>
			<artifactId>mybatis-plus-generator</artifactId>
			<version>3.5.3.1</version>
		</dependency>
		<!--引擎模板依赖-->
		<dependency>
			<groupId>org.apache.velocity</groupId>
			<artifactId>velocity</artifactId>
			<version>1.7</version>
		</dependency>

四、核心代码


public class gen {



    public static void main(String[] args) {
        String dbName = "hr";
        //需要生成的表
        String[] tableNames = {
                "org_sales_area"
        };
        for (String tableName : tableNames) {
            FastAutoGenerator.create("jdbc:mysql://127.0.0.1:3306/"+dbName+"?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&allowMultiQueries=true&allowPublicKeyRetrieval=true",
                            "root",
                            "root")
                    .globalConfig(builder -> {
                        builder.author("hr") // 设置作者
//                            .enableSwagger() // 开启 swagger 模式
                                .fileOverride() // 覆盖已生成文件
                                .outputDir("D://生成实体//"); // 指定输出目录
                    })
                    .dataSourceConfig(builder -> builder.typeConvertHandler((globalConfig, typeRegistry, metaInfo) -> {
                        int typeCode = metaInfo.getJdbcType().TYPE_CODE;
                        if (typeCode == Types.SMALLINT) {
                            // 自定义类型转换
                            return DbColumnType.INTEGER;
                        }
                        return typeRegistry.getColumnType(metaInfo);

                    }))
                    .packageConfig(builder -> {
                        builder.parent("com.itbanana.org") // 设置父包名
                                .pathInfo(Collections.singletonMap(OutputFile.xml, "D://生成实体//")); // 设置mapperXml生成路径
                    })
                    .strategyConfig(builder -> {
                        builder.addInclude(tableName)
                        // 设置过滤表后缀; // 设置需要生成的表名
//                        .addFieldSuffix("DO")
                        ;
                    })
                    .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
                    .execute();
        }

    }

}

直接执行生成即可,是不是很简单? 你可以尝试一下,免去了不少创建类的时间。

感谢观看至此,希望该文章能够帮助到您提升知识和技能。如果您喜欢我的内容,请不要忘记点赞和分享哦!👍