spring cloud+vue在线视频网站 7.代码生成模块 part 1

这一章主要是完成代码生成的模块,用到的工具是 freemaker ,在完成代码生成模块的同时会完成小节部分的代码。

freemaker 的基本用法

一般来说一个 freemaker 的模版基本会包括下面四部分。
文本:直接输出的部分
注释:<#–2333–>格式部分,不会输出
插值:即${…}或#{…}格式的部分,将使用数据模型中的部分替代输出
FTL指令:FreeMarker指定,和HTML标记类似,名字前加#予以区分,不会输出

引入 freemaker

首先在 course 的依赖管理中添加 freemaker 依赖:

<dependency>
	<groupId>org.freemarker</groupId>
	<artifactId>freemarker</artifactId>
	<version>2.3.29</version>
</dependency>

然后在 course 中新建 generator 包作为代码生成模块,pom 文件中添加 freemaker 依赖。

<dependency>
	<groupId>org.freemarker</groupId>
	<artifactId>freemarker</artifactId>
</dependency>

数据库持久层生成

mabatis generator 生成持久层

修改 server 中 resource 的 generatorConfig 最后的 tableName 和 domainObjectName 。

<?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="Mysql" targetRuntime="MyBatis3" defaultModelType="flat">
        <!-- 添加后sql语句中的关键字和表用``区分-->
        <property name="beginningDelimiter" value="`"/>
        <property name="endingDelimiter" value="`"/>

        <!--  生成xml文件自动覆盖之前的文件  -->
        <plugin type="org.mybatis.generator.plugins.UnmergeableXmlMappersPlugin"/>
        <!--  生成实例类的tostring方法   -->
        <plugin type="org.mybatis.generator.plugins.ToStringPlugin"/>

        <!--  删除所有注释-->
        <commentGenerator>
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>

        <!--连接数据库,修改自己的数据库名用户名密码-->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/course"
                        userId="root"
                        password="czj666666">
        </jdbcConnection>

        <!-- domain类的位置 -->
        <javaModelGenerator targetProject="src/main/java"
                            targetPackage="com.course.server.domain"/>

        <!-- mapper xml的位置 -->
        <sqlMapGenerator targetProject="src/main/resources"
                         targetPackage="mapper"/>

        <!-- mapper类的位置 -->
        <javaClientGenerator targetProject="src/main/java"
                             targetPackage="com.course.server.mapper"
                             type="XMLMAPPER" />


<!--        <table tableName="test" domainObjectName="Test"></table>-->
<!--        <table tableName="chapter" domainObjectName="Chapter"></table>-->
        <table tableName="section" domainObjectName="Section"></table>
    </context>
</generatorConfiguration>

运行 mybatis-generator 后生成持久层代码。

生成数据库表

这里用之前的 doc/db/all.sql 来生成数据库表,并添加数据。

drop table if exists `section`;
create table `section` (
    `id` char(8) not null default '' comment 'ID',
    `title` varchar(50) not null comment '标题',
    `course_id` char(8) comment '课程|course.id',
    `chapter_id` char(8) comment '大章|chapter.id',
    `video` char(200) comment '视频',
    `time` int comment '时长|单位秒',
    `charge` char(1) comment '收费|C 收费;F 免费',
    `sort` int comment '顺序',
    `created_at` DATETIME(3) comment '创建时间',
    `updated_at` datetime(3) comment '修改时间',
    primary key (`id`)
)engine=innodb default charset=utf8mb4 comment='小节';

insert into `section` (id, title, course_id, chapter_id, video, time, charge, sort, created_at, updated_at)
values ('00000001','测试小节01','00000001','00000000','',500,'F',1,now(),now());

控制层服务层模版文件

freemaker 工具类

在 generator 模块中,创建如下结构的包。ftl 包存放 freemaker 模版文件,控制层和服务层代码都由这里的 ftl 模版生成;util 包存放 freemaker 工具类,server 中的 main 方法会调用抽离的工具类;server 中包含生成代码的 main 方法。

在这里插入图片描述

这里首先创建了一个 freemaker 的工具类。其中包含了 init 方法和 generator 方法。
其中 init 方法的作用是初始化 freemaker 设置,加载模版文件;generatro 方法的作用是生成文件并写入 map 对应的代码。

package com.course.generator.util;

import freemarker.template.Configuration;
import freemarker.template.DefaultObjectWrapper;
import freemarker.template.Template;
import freemarker.template.TemplateException;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Map;

public class FreemarkerUtil {
   

    static Template temp;

    public static void initConfig(String ftlPath,String ftlName) throws IOException {
   
        Configuration cfg = new Configuration(Configuration.VERSION_2_3_29);
        cfg.setDirectoryForTemplateLoading(new File(ftlPath));
        cfg.setObjectWrapper(new DefaultObjectWrapper(Configuration.VERSION_2_3_
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值