使用mybatis-plus总是po和vo相互转换手写比较累现在自己写个模板自动生成代码

1 引入maven


        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-freemarker</artifactId>
        </dependency>

2 填写模板

 生成vo

public class ${beanName?cap_first}VO {

<#list params as param>
    private ${param.paramType} ${param.paramName};

</#list>

<#list params as param>
    public ${beanName?cap_first}VO set${param.paramName?cap_first}(${param.paramType} ${param.paramName}){
        this.${param.paramName} = ${param.paramName};
        return this;
    }

    public ${param.paramType} get${param.paramName?cap_first}(){
        return this.${param.paramName};
    }

</#list>
}

生成 转换文件

public class ${beanName?cap_first}Transfer {

   /**
     * 获取${beanName?cap_first}
     *
     * @param ${beanName?lower_case}VO
     * @return
     */
    public static ${beanName?cap_first} get${beanName?cap_first}(${beanName?cap_first}VO ${beanName?lower_case}VO) {

        if (${beanName?lower_case}VO == null) {
            return null;
        }

        return new ${beanName?cap_first}()
        <#list params as param>
             .set${param.paramName?cap_first}(${beanName?lower_case}VO.get${param.paramName?cap_first}())
        </#list >;

    }


   /**
     * 获取${beanName?cap_first}VO
     *
     * @param ${beanName?lower_case}
     * @return
     */
    public static ${beanName?cap_first}VO get${beanName?cap_first}VO(${beanName?cap_first} ${beanName?lower_case}) {

        if (${beanName?lower_case} == null) {
            return null;
        }

        return new ${beanName?cap_first}VO()
        <#list params as param>
            .set${param.paramName?cap_first}(${beanName?lower_case}.get${param.paramName?cap_first}())
        </#list >;
    }


   /**
     * 获取get${beanName?cap_first}VOList
     *
     * @param ${beanName?lower_case}List
     * @return
     */
    public static List<${beanName?cap_first}VO> get${beanName?cap_first}VO(List<${beanName?cap_first}> ${beanName?lower_case}List) {

        List<${beanName?cap_first}VO> ${beanName?lower_case}VOList = new ArrayList<>();

        if (CollectionUtils.isEmpty(bankList)) {
             return ${beanName?lower_case}List;
        }

       ${beanName?lower_case}List.stream().filter(${beanName?lower_case} -> ${beanName?lower_case} != null).forEach(${beanName?lower_case} -> {
             ${beanName?lower_case}VOList.add(get${beanName?cap_first}VO(${beanName?lower_case}));
        });

        return ${beanName?lower_case}VOList;

    }
}

java代码

public class AutoCreateCode {

    /**
     * @param poClass    javaBean
     * @param outputPath 输出目录 eg:D:不带//
     */
    public static void createVOAndTransfer(Class poClass, String outputPath) {

        // 拼装数据
        Map<String, Object> formBeanMap = new HashMap<String, Object>();

        // 类名称
        formBeanMap.put("beanName", poClass.getSimpleName());

        // 获取属性
        Field[] declaredFields = poClass.getDeclaredFields();

        // 用于封装属性
        List<Map<String, String>> paramsList = new ArrayList<Map<String, String>>();

        for (int i = 0; i < declaredFields.length; i++) {
            Map<String, String> tmpParamMap = new HashMap<String, String>();

            //排除 serialVersionUID 和 isDeleted字段
            if (!declaredFields[i].getName().equals("serialVersionUID") && !declaredFields[i].getName().equals("isDeleted")) {
                // 参数类型
                tmpParamMap.put("paramType", declaredFields[i].getType().getSimpleName());

                // 参数名称
                tmpParamMap.put("paramName", declaredFields[i].getName());

                paramsList.add(tmpParamMap);
            }
        }

        formBeanMap.put("params", paramsList);

        createTemplate(formBeanMap, outputPath, "formVO.ftl", "VO.java");

        createTemplate(formBeanMap, outputPath, "transfer.ftl", "Transfer.java");

    }

    private static void createTemplate(Map<String, Object> formBeanMap, String outputPath, String templatePath, String javaFileName) {
        try {
            freemarker.template.Configuration config = new freemarker.template.Configuration();
            config.setClassForTemplateLoading(AutoCreateCode.class, "/templates");
            config.setObjectWrapper(new DefaultObjectWrapper());
            Template formBeanTemplate = config.getTemplate(templatePath, "UTF-8");
            Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outputPath + "\\" + formBeanMap.get("beanName") + javaFileName), "UTF-8"));
            formBeanTemplate.process(formBeanMap, out);
            out.flush();
            out.close();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (TemplateException e) {
            e.printStackTrace();
        }
    }
}

   生成两个文件

public class PartnerTransfer {

   /**
     * 获取Partner
     *
     * @param partnerVO
     * @return
     */
    public static Partner getPartner(PartnerVO partnerVO) {

        if (partnerVO == null) {
            return null;
        }

        return new Partner()
             .setId(partnerVO.getId())
                     .setName(partnerVO.getName())
                     .setCreateBy(partnerVO.getCreateBy())
                     .setCreateTime(partnerVO.getCreateTime())
                     .setUpdateBy(partnerVO.getUpdateBy())
                     .setUpdateTime(partnerVO.getUpdateTime())
                     .setCurrencyId(partnerVO.getCurrencyId())
        ;

    }


   /**
     * 获取PartnerVO
     *
     * @param partner
     * @return
     */
    public static PartnerVO getPartnerVO(Partner partner) {

        if (partner == null) {
            return null;
        }

        return new PartnerVO()
            .setId(partner.getId())
                    .setName(partner.getName())
                    .setCreateBy(partner.getCreateBy())
                    .setCreateTime(partner.getCreateTime())
                    .setUpdateBy(partner.getUpdateBy())
                    .setUpdateTime(partner.getUpdateTime())
                    .setCurrencyId(partner.getCurrencyId())
        ;
    }


   /**
     * 获取getPartnerVOList
     *
     * @param partnerList
     * @return
     */
    public static List getPartnerVO(List partnerList) {

        List partnerVOList = new ArrayList<>();

        if (CollectionUtils.isEmpty(bankList)) {
             return partnerList;
        }

       partnerList.stream().filter(partner -> partner != null).forEach(partner -> {
             partnerVOList.add(getPartnerVO(partner));
        });

        return partnerVOList;

    }
}

 

public class PartnerVO {

    private Long id;

    private String name;

    private Long createBy;

    private Date createTime;

    private Long updateBy;

    private Date updateTime;

    public PartnerVO setId(Long id){
        this.id = id;
        return this;
    }

    public Long getId(){
        return this.id;
    }
 
    public String getName(){
        return this.name;
    }


    public PartnerVO setCreateBy(Long createBy){
        this.createBy = createBy;
        return this;
    }

    public Long getCreateBy(){
        return this.createBy;
    }

    public PartnerVO setCreateTime(Date createTime){
        this.createTime = createTime;
        return this;
    }

    public Date getCreateTime(){
        return this.createTime;
    }

    public PartnerVO setUpdateBy(Long updateBy){
        this.updateBy = updateBy;
        return this;
    }

    public Long getUpdateBy(){
        return this.updateBy;
    }

    public PartnerVO setUpdateTime(Date updateTime){
        this.updateTime = updateTime;
        return this;
    }

    public Date getUpdateTime(){
        return this.updateTime;
    }
}

转载 http://www.51csdn.cn/article/125.html 

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
如何使用? 很高兴为您解答这个问题。为了使用MyBatis-Plus自动生成代码模板Controller,您需要遵循以下步骤: 1. 安装MyBatis-Plus插件。您可以在Maven中添加以下代码来添加MyBatis-Plus依赖项: ```xml <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.1</version> </dependency> ``` 2. 根据您的需要配置MyBatis-Plus。您可以在application.properties文件中添加以下配置: ```properties # 数据库连接 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://your-database-url:3306/your-database-name?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC spring.datasource.username=your-database-username spring.datasource.password=your-database-password # MyBatis-Plus配置 mybatis-plus.mapper-locations=classpath:mapper/*.xml mybatis-plus.type-aliases-package=com.example.demo.entity ``` 3. 在您的实体类中添加需要映射的数据库表。对于每个表,需要创建一个Java类,用于映射表中的数据。您可以使用MyBatis-Plus提供的注解来配置主键和字段的映射: ```java @Data @TableName("user") // 表名 public class User { @TableId(value = "id", type = IdType.AUTO) // 主键 private Long id; @TableField("name") // 字段 private String name; // 省略其他字段 } ``` 4. 使用MyBatis-Plus代码生成器生成代码MyBatis-Plus提供了一个代码生成器,该生成器可以根据您的实体类和数据库表自动生成代码。您可以使用以下命令启动代码生成器: ```java import com.baomidou.mybatisplus.generator.AutoGenerator; public class CodeGenerator { public static void main(String[] args) { AutoGenerator mpg = new AutoGenerator(); // 定义包名和文件路径 // ... // 配置数据源 // ... // 配置生成策略 // ... // 配置模板 // ... mpg.execute(); } } ``` 5. 完成后,您将在指定的文件夹中看到生成的代码,包括实体类、Mapper接口、XML文件和Service类。 希望这能帮到您!如果您有任何其他问题,请随时问我。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值