使用Freemarker生成service和Controller

.id(id)

.status(status)

.build();

int res = baseMapper.updateById(${objName});

return res == 1 ? true : false;

}

@Override

public boolean modify(${className} ${objName}) {

QueryWrapper<${className}> queryWrapper = new QueryWrapper<>();

queryWrapper.eq(“id”,${objName}.getId());

int updateRes = baseMapper.update(${objName}, queryWrapper);

return updateRes == 1 ? true : false;

}

}

控制器模板


package com.resume.controller;

import com.resume.bean.DataTableResponse;

import com.resume.bean.Result;

import com.resume.bean.ResultUtil;

import com.resume.constant.GlobalConst;

import com.resume.domain.${className};

import com.resume.enums.ResultEnum;

import com.resume.ex.ResumeException;

import com.resume.service.${className}Service;

import io.swagger.annotations.Api;

import io.swagger.annotations.ApiOperation;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.GetMapping;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;

import java.util.List;

/**

  • @Author: 梁云亮

  • @Date: 2021/7/16 16:17

  • @Describe:

*/

@Api(value = “ c o m m e n t 控制器: {comment}控制器: comment控制器:{className}Controller”,tags = “ c l a s s N a m e C o n t r o l l e r : {className}Controller: classNameController{comment}控制器”)

@Controller

@RequestMapping(“/${objName}”)

public class ${className}Controller {

@Resource

private ${className}Service ${objName}Service;

@ApiOperation(value = “打开 c o m m e n t 列表页面 " , n o t e s = " 打开 {comment}列表页面", notes = "打开 comment列表页面",notes="打开{comment}列表页面”)

@GetMapping(“/open${className}”)

public String open${className}(){

return “/base/${objName}”;

}

@ApiOperation(value = “显示 c o m m e n t 列表 " , n o t e s = " 显示 {comment}列表", notes = "显示 comment列表",notes="显示{comment}列表”)

@ResponseBody

@GetMapping(“/v1/list”)

public Result <DataTableResponse<${className}>> list() {

List<${className}> ${objName}List = o b j N a m e S e r v i c e . l i s t A l l U s a b l e {objName}Service.listAllUsable objNameService.listAllUsable{className}();

DataTableResponse<${className}> dataTableResponse = new DataTableResponse<>();

dataTableResponse.setSEcho(3);

dataTableResponse.setITotalRecords(80L);

dataTableResponse.setITotalDisplayRecords(70L);

dataTableResponse.setAaData(${objName}List);

return ResultUtil.success(200, “数据查询成功”, dataTableResponse);

}

@ApiOperation(value = “删除 c o m m e n t " , n o t e s = " 根据编号删除 {comment}", notes = "根据编号删除 comment",notes="根据编号删除{comment}”)

@ResponseBody

@GetMapping(“/v1/remove”)

public Result remove(Integer id) {

try {

o b j N a m e S e r v i c e . m o d i f y {objName}Service.modify objNameService.modify{className}Status(id, GlobalConst.Common.STATUS_DISABLE);

return ResultUtil.success(ResultEnum.SUCCESS);

} catch (Exception e) {

throw new ResumeException(ResultEnum.SQL_ERROR);

}

}

@ApiOperation(value = “修改 c o m m e n t " , n o t e s = " 根据编号修改 {comment}", notes = "根据编号修改 comment",notes="根据编号修改{comment}”)

@ResponseBody

@GetMapping(“/v1/modify”)

public Result modify(${className} ${objName}) {

try {

o b j N a m e S e r v i c e . m o d i f y ( {objName}Service.modify( objNameService.modify({objName});

return ResultUtil.success(ResultEnum.SUCCESS);

} catch (Exception e) {

throw new ResumeException(ResultEnum.SQL_ERROR);

}

}

@ApiOperation(value = “增加 c o m m e n t " , n o t e s = " 增加 {comment}", notes = "增加 comment",notes="增加{comment}”)

@ResponseBody

@GetMapping(“/v1/create”)

public Result create(${className} ${objName}) {

try {

o b j N a m e S e r v i c e . s a v e ( {objName}Service.save( objNameService.save({objName});

return ResultUtil.success(ResultEnum.SUCCESS);

} catch (Exception e) {

throw new ResumeException(ResultEnum.SQL_ERROR);

}

}

}

Freemarker工具类


import freemarker.template.Configuration;

import freemarker.template.Template;

import freemarker.template.TemplateException;

import java.io.File;

import java.io.FileWriter;

import java.io.IOException;

import java.io.Writer;

import java.util.Map;

/**

  • @author 梁云亮

  • @description Freemarker工具类

*/

public class FreemarkerUtil {

/**

  • 根据模板,利用提供的数据,生成文件

  • @param ftlNameWithPath 模板文件

  • @param data 数据

  • @param aimFileName 最终生成的文件

  • @throws IOException

  • @throws TemplateException

*/

public static void execute(String ftlNameWithPath, Map<String, Object> data, String aimFileName)

throws IOException, TemplateException {

Configuration cfg = new Configuration(Configuration.VERSION_2_3_25); // 创建Freemarker配置实例

int i =

ftlNameWithPath.lastIndexOf(“/”) == -1

? ftlNameWithPath.lastIndexOf(“\”)
ftlNameWithPath.lastIndexOf(“/”);

cfg.setDirectoryForTemplateLoading(new File(ftlNameWithPath.substring(0, i + 1)));

cfg.setDefaultEncoding(“UTF-8”);

Template t1 = cfg.getTemplate(ftlNameWithPath.substring(i + 1)); // 加载模板文件

Writer out = new FileWriter(new File(aimFileName));

t1.process(data, out);

out.flush();

out.close();

}

}

测试代码


import freemarker.template.TemplateException;

import java.io.IOException;

import java.util.HashMap;

import java.util.Map;

/**

  • @Author: 梁云亮

  • @Date: 2021/7/16 20:40

  • @Describe:

*/

public class GenApplication {

private static String className = “Project”;

private static String objName = “project”;

private static String comment = “期日经验”;

private static String basePath = “src/main/java/com/resume/”;

public static void main(String[] args) throws IOException, TemplateException {

// 生成Service接口

genService(className, objName, comment);

//生成Service实现类

genServiceImpl(className, objName);

// 生成Controller

genController(className, objName, comment);

}

/**

  • 生成Service接口

  • @param className

  • @param objName

  • @throws IOException

  • @throws TemplateException

*/

private static void genService(String className, String objName, String comment) throws IOException, TemplateException {

String ftlNameWithPath = basePath + “utils/gen/ftl/service.ftl”;

String aimFileName = basePath + “service/” + className + “Service.java”;

Map<String, Object> map = new HashMap<>();

map.put(“objName”, objName);

map.put(“className”, className);

map.put(“comment”, comment);

FreemarkerUtil.execute(ftlNameWithPath, map, aimFileName);

}

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**

[外链图片转存中…(img-B7QqIK6J-1715826864550)]

[外链图片转存中…(img-HPFrEkTK-1715826864551)]

[外链图片转存中…(img-tx8MKZNF-1715826864551)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值