Python - 通过format 函数制作简易的代码模版,生成代码

Python - 通过format 函数制作简易的代码模版,生成代码


1、编写几个代码模版

package com.wretchant.nsbd.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import lombok.extern.slf4j.Slf4j;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
import org.hibernate.annotations.NotFound;
import org.hibernate.annotations.NotFoundAction;
import org.springframework.cache.annotation.Cacheable;

import javax.persistence.*;
import java.io.Serializable;

/**
 * @author Created by 谭健 on 2020/6/3. 星期三. 14:16.
 * © All Rights Reserved.
 */


@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@Slf4j
@Entity
@Table(name = "{table_name}")
@DynamicInsert
@DynamicUpdate
//@Cacheable("ENTITY")
public class {class_name} extends Base implements Serializable $


    private static final long serialVersionUID = {serial_id};
    private String url;

    /**
     * 认定表id
     */
//    @Column(name = "cognizance_id")
    private Long cognizanceId;

//    @ManyToOne
//    @JoinColumn(name = "cognizance_id")
//    @NotFound(action = NotFoundAction.IGNORE)
//    @Column(name = "cognizance_id")
//    private Cognizance cognizance;
~



package com.wretchant.nsbd.controller;

import cn.hutool.core.util.StrUtil;
import com.wretchant.nsbd.entity.Img;
import com.wretchant.nsbd.entity.Project;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.List;

/**
 * @author Created by 谭健 on 2020/6/6. 星期六. 10:10.
 * © All Rights Reserved.
 */

@Validated
@RequestMapping("api/img")
@RestController
public class ImgController extends BaseController $

    @PostMapping("save/$cognizanceId:.+~")
    public String save(@PathVariable("cognizanceId") Long cognizanceId,@NotBlank String url) $
        Img img = new Img();
        img.setCognizanceId(cognizanceId);
        img.setUrl(url);
        imgRepo.saveAndFlush(img);
        return "success";
    ~
~



package com.wretchant.nsbd.jpa;

import com.wretchant.nsbd.entity.Img;
import org.springframework.cache.annotation.Cacheable;

import java.util.List;

/**
 * @author Created by 谭健 on 2020/6/3. 星期三. 14:17.
 * © All Rights Reserved.
 */
//@Cacheable("REPO")
public interface  ImgRepo  extends BaseRepo<Img,Long>$


    List<Img> findByDeletedIsFalseAndCognizanceId(Long cognizanceId);
~


2、编写python 代码

import random
from dir import dir_utils


# 替换掉java 里面的大括号
def reduction(s):
    return str(s).replace('$', '{').replace('~', '}')


# 通过模版生成文件
def exec_template(path, need_print=False, **parameter):
    template = open(path, encoding='utf-8').readlines()
    format_template = []
    for line in template:
        format_line = str(line).format(**parameter)
        last = reduction(format_line)
        format_template.append(last)
        if need_print:
            print(last, end='')
    return format_template


# 批量模块生成文件
def batch_exec_template(path, need_print=False, **parameter):
    templates = []
    rel_dirs, rel_filenames = dir_utils.foreach(path)
    for template_name in rel_filenames:
        templates.append(exec_template(template_name, need_print, **parameter))
    return templates


# 可以用于代码生成
if __name__ == '__main__':
    pm = {
        'table_name': 'img',
        'class_name': 'Img',
        'serial_id': random.randint(-9999999999, 9999999999)
    }
    batch_exec_template('jpa_code_template', True, **pm)



猜你喜欢

转载自blog.csdn.net/qq_15071263/article/details/107345046
今日推荐