美文网首页
idea模板快速生成公共代码

idea模板快速生成公共代码

作者: woniu95 | 来源:发表于2018-07-27 17:46 被阅读0次

在平常的开发中,我们经常要写Dao,Service,Controller层,而每层都有些共用的代码,其中Dao中的公共代码如下图所示(这里使用了mybatis generator自动生成代码):

公共代码图

那么我们就可以利用idea的class和interface模板来自动生成这些公共代码,省去了复制粘贴的时间,提升效率,模板的语言是velocity。首先进入idea,按下command+,这个快捷键进入到Preferences中,然后在搜索框输入:file and code templates,如下图所示,我们聚焦到class和interface中,这里解释下这两个东西,当你创建class和interface的时候,所生成的代码就是从这里面来的:

结果图

首先是class,在代码中把下面的代码覆盖当前的代码,:

//${PACKAGE_NAME}代表包名,如:com.java.test
//${NAME}代表你输入的class名或者interface名,如:UserController
#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end
#set($name = ${NAME})
//如果类是xxxController
#if (${NAME} && $name.endsWith("Controller"))
import com.alibaba.fastjson.JSONObject;
import com.miniprogram.common.response.Response;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
#end
//如果类名是xxxServiceImpl
#if (${NAME} && $name.endsWith("ServiceImpl"))
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
#end
//如果类名是xxxDaoImpl
#if (${NAME} && $name.endsWith("DaoImpl"))
import com.google.common.base.Preconditions;
import com.miniprogram.common.utils.ValidationUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
#end
​
//这里生成作者,日期之类的信息,自己配置,默认空
#parse("File Header.java")
​
//下面是处理不同类的注解
#if (${NAME} && $name.endsWith("Controller"))
@Api(tags = "")
@RestController
@RequestMapping("")
#end
#if (${NAME} && ($name.endsWith("ServiceImpl") || $name.endsWith("DaoImpl")))
@Service("")
#end
//下面处理类的一些公共代码
public class ${NAME} #if (${NAME} && $name.endsWith("ServiceImpl"))implements $name.replace("Impl","")#end {
 //xxxController的公共代码
 #if (${NAME} && $name.endsWith("Controller"))
 @Autowired
 private xxx xxx;

 @ApiOperation(value = "xxx")
 @RequestMapping(value = "/xxx", method = RequestMethod.GET)
 public JSONObject adminLogin(@ApiParam(name = "xxx", value = "xxx") String xxx) {

 return Response.succ();
 }
 #end
 //xxxService的公共代码
 #if (${NAME} && $name.endsWith("ServiceImpl"))
 @Autowired
 private $name.replace("ServiceImpl","")Dao $name.replace("ServiceImpl","").toLowerCase()Dao;
​
 @Override
 public Long insert($name.replace("ServiceImpl","") $name.replace("ServiceImpl","").toLowerCase()) {
 return null;
 }
​
 @Override
 public List<$name.replace("ServiceImpl","")> find($name.replace("ServiceImpl","")Example example) {
 return null;
 }
​
 @Override
 public Integer update($name.replace("ServiceImpl","") $name.replace("ServiceImpl","").toLowerCase(), $name.replace("ServiceImpl","")Example example) {
 return null;
 }
​
 @Override
 public Integer count($name.replace("ServiceImpl","")Example example) {
 return null;
 }
 #end
 //xxxDaoImpl的公共代码
 #if (${NAME} && $name.endsWith("DaoImpl"))
 @Autowired
 private $name.replace("DaoImpl","")Mapper $name.replace("DaoImpl","").toLowerCase()Mapper;
​
 @Override
 public Long insert($name.replace("DaoImpl","") $name.replace("DaoImpl","").toLowerCase()) {
 Preconditions.checkNotNull($name.replace("DaoImpl","").toLowerCase());
 ValidationUtil.validate($name.replace("DaoImpl","").toLowerCase());
 ${name.replace("DaoImpl","").toLowerCase()}.checkBeforeInsert();
 ${name.replace("DaoImpl","").toLowerCase()}Mapper.insertSelective($name.replace("DaoImpl","").toLowerCase());
 return ${name.replace("DaoImpl","").toLowerCase()}.getId();
 }
​
 @Override
 public Integer update($name.replace("DaoImpl","") $name.replace("DaoImpl","").toLowerCase(), $name.replace("DaoImpl","")Example example) {
 ${name.replace("DaoImpl","").toLowerCase()}.checkBeforeUpdate();
 return ${name.replace("DaoImpl","").toLowerCase()}Mapper.updateByExampleSelective($name.replace("DaoImpl","").toLowerCase(), example);
 }
​
 @Override
 public List<$name.replace("DaoImpl","")> find($name.replace("DaoImpl","")Example example) {
 return ${name.replace("DaoImpl","").toLowerCase()}Mapper.selectByExample(example);
 }
​
 @Override
 public Integer count($name.replace("DaoImpl","")Example example) {
 return ${name.replace("DaoImpl","").toLowerCase()}Mapper.countByExample(example);
 }
 #end
}
​</pre>

下面是interface的代码,也是覆盖当前代码:

#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end
#set($name = ${NAME})
//下面是根据是xxxService还是xxxDao来导入包
#if (${NAME} && $name.endsWith("Service"))
import org.springframework.stereotype.Service;
import java.util.List;
#end
#if (${NAME} && $name.endsWith("Dao"))
import java.util.List;
#end
​
#parse("File Header.java")
​
public interface ${NAME} {
 //xxxService的公共代码
 #if (${NAME} && $name.endsWith("Service"))

 List<$beanName> find(${beanName}Example example);
​
 Integer count(${beanName}Example example);
​
 Integer update($beanName $beanName.toLowerCase(), ${beanName}Example example);
​
 $beanName insert($beanName $beanName.toLowerCase());
 #end
 //xxxDao的公共代码
 #if (${NAME} && $name.endsWith("Dao"))
 public Long insert($beanName $beanName.toLowerCase());
​
 public Integer update($beanName $beanName.toLowerCase(), ${beanName}Example example);
​
 public List<$beanName> find(${beanName}Example example);
​
 public Integer count(${beanName}Example example);
 #end
}
​</pre>

这两个文件的功能都写在注释之中了,其中velocity的语法我没有写,有兴趣的可以去学习下,下面我们来看看效果图,毕竟好不容易写好了这些代码:

效果图

可以看到,这里很方便的就生成了一段公共的代码,各位也可以根据自己公司的逻辑自定义这些templates,只要会一点velocity语法就行。

相关文章

  • idea模板快速生成公共代码

    在平常的开发中,我们经常要写Dao,Service,Controller层,而每层都有些共用的代码,其中Dao中的...

  • mac下intellIJ IDEA 常用快捷键(持续更新)

    设置Idea类注释模板和方法注释模板 快速重载接口类中方法 command + i 快速自动生成带参数的构造函数注...

  • IDEA编写快捷生成代码

    在开发中我们常用到了许多如for循环,打印,if语句等,那么IDEA开发工具能让我们快速的编写生成模板代码 1. ...

  • 05-Django模板

    一、模板概述 模板组成HTML代码动态插入的代码(挖坑、填坑逻辑控制代码) 作用快速生成HTML页面 优点模板的设...

  • 05-Django模板

    一、模板概述 模板组成HTML代码动态插入的代码(挖坑、填坑逻辑控制代码) 作用快速生成HTML页面 优点模板的设...

  • IntelliJ IDEA常用快捷键大全

    另: 代码实时模板生成:psvm/sout/ifn等按Tab键快速生成模板。 转载请保留或注明出处:https:/...

  • 2018-11-19UI自动化&参数化

    一、java学习 idea 实时代码模板 idea实时代码模板 创建模板组,模板https://www.tapd....

  • 2018-11-19

    一、java学习 idea 实时代码模板 idea实时代码模板 创建模板组,模板https://www.tapd....

  • 2018-11-20

    一、java学习 idea 实时代码模板 idea实时代码模板 创建模板组,模板https://www.tapd....

  • (五) Django模板templates

    模板Templates 一. 概述 模板由两部分组成: HTML代码 逻辑控制代码作用: 快速生成HTML页面优点...

网友评论

      本文标题:idea模板快速生成公共代码

      本文链接:https://www.haomeiwen.com/subject/ytvgmftx.html