原 荐 JAVA懒开发:FreeMarker

太懒,不多说看图,mybatis-generator工具执行后的项目结构

这个时候没得额service接口类,和service实现类,也没的controller类

执行引擎工具类BeanGenerateUtil后结果

可以看见自动创建了包,和service接口类,和service实现类与controller类,别的内容我就不在一一展示了。自动完成了单个类的增删改查的API,注释,注解,都有了,在也不用担心忘记了配置@service注解什么的了,不过模板的一定保证正确哦。

BeanGenerateUtil类

public class BeanGenerateUtil {

	private Configuration cfg; 
	private String projectUrl = "H:\\xxxxxxx\\lazyDevelop"; //项目路径

	@SuppressWarnings("deprecation")
	public void init() throws IOException {
		cfg = new Configuration();
		// 设置模板存放位置
		cfg.setDirectoryForTemplateLoading(new File(projectUrl + "//src//test//java//generating//template"));
	}

	public void process(BeanGenerateUtil bgUtil) throws IOException {
		Map<String, Object> root = new HashMap<String, Object>();

		String model_name = "User";
	
		root.put("page_id", "lazy.develop");			//生成的包名
		root.put("dao_id", "lazy.develop.generator");	//dao和实体类的包名
		root.put("module_id", "id");					//主键
		root.put("model_name", "User");					//类名
		root.put("model_name_cn", "用户");				//描述
		root.put("object", "user");						//实列名
		// 项目java文件位置
		String ServicePath = projectUrl + "//src//main//java//";

		/*************** 生成Service ***************/
		String fileName = model_name + "Service.java";
		String savePath = "com//lazy//develop//service//";

		Template template = cfg.getTemplate("Service.ftl");
		bgUtil.buildTemplate(root, ServicePath, savePath, fileName, template);

		/*************** 生成ServiceImpl ***************/
		String ServiceimplPath = projectUrl + "//src//main//java//";
		fileName = model_name + "ServiceImpl.java";
		savePath = "com//lazy//develop//service//impl//";

		template = cfg.getTemplate("ServiceImpl.ftl");
		bgUtil.buildTemplate(root, ServiceimplPath, savePath, fileName, template);

		/*************** 生成Controller ***************/
		String ControllerPath = projectUrl + "//src//main//java//";
		fileName = model_name + "Controller.java";
		savePath = "com//lazy//develop//controller//";

		template = cfg.getTemplate("Controller.ftl");
		bgUtil.buildTemplate(root, ControllerPath, savePath, fileName, template);
	}

	public void buildTemplate(Map<String, Object> root, String projectPath, String savePath, String fileName, Template template) {
		String realFileName = projectPath + savePath + fileName;
		String realSavePath = projectPath + "/" + savePath;
		File newsDir = new File(realSavePath);
		if (!newsDir.exists()) {
			newsDir.mkdirs();
		}
		try {
			Writer out = new OutputStreamWriter(new FileOutputStream(realFileName), "UTF-8");
			template.process(root, out);
		} catch (Exception e) {
			System.out.println("==运行异常:"+ e);
		}
	}

	/**
	 * @param args
	 * @throws IOException
	 */
	public static void main(String[] args) throws IOException {
		BeanGenerateUtil bgUtil = new BeanGenerateUtil();
		bgUtil.init();
		bgUtil.process(bgUtil);
		System.out.println("生成Bean成功");
	}
}

展示一个模板

/**
 * @filename:Const 2018年01月01日
 * @project 微面    边鹏  V1.0
 * Copyright(c) 2017 BianP Co. Ltd. 
 * All right reserved. 
 */
package com.${page_id}.service;

import com.${dao_id}.entity.${model_name};

/**
 * @explain 逻辑层,接口类(${model_name_cn}) 
 * @author  BianP 
 * @class    ${model_name}Service.java  
 */
public interface ${model_name}Service {
	
	/**
	 * @explain 查找对象
	 * @param   id
	 * @return  ${model_name}
	 * @throws  Exception
	 */
	public ${model_name} selectByPrimaryKey(Long id);
	
	/**
	 * @explain 保存对象(添加)
	 * @param   ${model_name}
	 * @return  int
	 * @throws  Exception
	 */
	public int insertSelective(${model_name} ${object});

	/**
	 * @explain 有选择性:修改对象
	 * @param   ${model_name}
	 * @return  int
	 * @throws  Exception
	 */
	public int updateByPrimaryKeySelective(${model_name} ${object});

	/**
	 * @explain 有选择性:全修改
	 * @param   ${model_name}
	 * @return  int
	 * @throws  Exception
	 */
	public int updateByPrimaryKey(${model_name} ${object});
	
	/**
	 * @explain 删除对象 
	 * @param   id
	 * @return  int
	 * @throws  Exception
	 */
	public int deleteByPrimaryKey(Long id);
	
}

看到这,大家应该都清楚了吧,很简单的,这个方式的灵活性不是很高。不过对开发减少工作量还是不错的,也减少了工作因粗心造成的遗漏。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java技术栈

Spring Boot 最核心的 3 个注解详解

最近面试一些 Java 开发者,他们其中有些在公司实际用过 Spring Boot, 有些是自己兴趣爱好在业余自己学习过。

581
来自专栏java闲聊

SSM,第一天基于Maven的SSM整合,依赖关系搭建

1725
来自专栏Java帮帮-微信公众号-技术文章全总结

struts2关于action拦截器使用方法 现记录如下

struts2关于action拦截器使用方法 现记录如下 以便将来取用 struts2 与spring与hibernate整合 struts2中拦截actio...

3476
来自专栏菩提树下的杨过

Spring 4.0.2 学习笔记(2) - 自动注入及properties文件的使用

接上一篇继续, 学习了基本的注入使用后,可能有人会跟我一样觉得有点不爽,Programmer的每个Field,至少要有一个setter,这样spring配置文件...

1896
来自专栏nice_每一天

springboot注解  转载自:springboot注解

我们的Example类上使用的第一个注解是 @RestController 。这被称为一个构造型(stereotype)注解。它为阅读代码的人们提供建议。对于S...

951
来自专栏扎心了老铁

java通过shield链接Elasticsearch

本文mark了springboot中集成elasticsearch,并且实现连接带有shield权限管理的elasticsearch的方法。 tips:首先建议...

3375
来自专栏菩提树下的杨过

weblogic 10.x 上开发restful服务

之前已经学习过 利用JAX-RS快速开发RESTful 服务,当时是jboss环境,如果原封不动的迁移到weblogic 10.x 版本,会杯具的发现应用启动失...

19710
来自专栏Java Web

MyBatis 与 Spring 整合

MyBatis—Spring 项目 目前大部分的 Java 互联网项目,都是用 Spring MVC + Spring + MyBatis 搭建平台的。 使用 ...

3736
来自专栏别先生

Spring之hello world(Spring入门)

spring各个版本中: 在3.0以下的版本,源码有spring中相关的所有包【spring功能 + 依赖包】 如2.5版本; 在3.0以上的版本,源...

17910
来自专栏别先生

SpringMVC的初始

1:其实一开始对SSH和SSM并不是很熟悉的,对SSH可能熟悉些(Struts,Spring,Hibernate)这三个框架。但是由于框架的更新,和出现了更好的...

1939

扫码关注云+社区