liquibase表升级脚本生成(springboot)

本例是运用的若依的框架,其中有根据表名生成实体的功能。有的公司会用liquibase去管理数据库的表,先将初始化自动生成方式记录(本文基础数据库是oracle,生成的脚本适用于oracle,mysql,达梦)

一、Controller层

    /**
     * 生成代码
     */
    @RequiresPermissions("tool:gen:code")
    @GetMapping("/genCode/{tableName}")
    public void genCode(HttpServletResponse response, @PathVariable("tableName") String tableName) throws IOException {
        byte[] data = genService.generatorCode(tableName);
        response.reset();
        response.setHeader("Content-Disposition", "attachment; filename=\"gen.zip\"");
        response.addHeader("Content-Length", "" + data.length);
        response.setContentType("application/octet-stream; charset=UTF-8");

        IOUtils.write(data, response.getOutputStream());
    }

二、service层

package cn.com.XXXX.framework.tool.gen.service.impl;

import cn.com.XXXX.common.config.GenConfig;
import cn.com.XXXX.common.exception.base.BaseException;
import cn.com.XXXX.common.utils.ConfigUtil;
import cn.com.XXXX.common.utils.security.ShiroUtils;
import cn.com.XXXX.common.web.page.PageDomain;
import cn.com.XXXX.common.web.page.TableSupport;
import cn.com.XXXX.framework.tool.gen.constant.LiquibaseConstant;
import cn.com.XXXX.framework.tool.gen.domain.ColumnInfo;
import cn.com.XXXX.framework.tool.gen.domain.TableInfo;
import cn.com.XXXX.framework.tool.gen.domain.liquibase.VmFieldModel;
import cn.com.XXXX.framework.tool.gen.domain.liquibase.VmTableModel;
import cn.com.XXXX.framework.tool.gen.mapper.GenMapper;
import cn.com.XXXX.framework.tool.gen.service.IGenService;
import cn.com.XXXX.framework.tool.gen.util.GenUtils;
import cn.com.XXXX.framework.tool.gen.util.VelocityInitializer;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import com.github.pagehelper.PageHelper;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.Velocity;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

/**
 * 代码生成 服务层处理
 *
 * @author RongDa
 */
@Service("genService")
public class GenServiceImpl implements IGenService {

    @Autowired
    private GenMapper genMapper;

    /**
     * 查询ry数据库表信息
     *
     * @param tableInfo 表信息
     * @return 数据库表列表
     */
    @Override
    public List<TableInfo> selectTableList(TableInfo tableInfo) {
        tableInfo.setOwner(ConfigUtil.get("sys.gen.owner", "oracle"));
        PageDomain pageDomain = TableSupport.buildPageRequest();
        PageHelper.startPage(pageDomain.getPageNum(), pageDomain.getPageSize());
        return genMapper.selectTableList(tableInfo);
    }

    /**
     * 生成代码
     *
     * @param tableName 表名称
     * @return 数据
     */
    @Override
    public byte[] generatorCode(String tableName) {
        String owner = ConfigUtil.get("sys.gen.owner", "oracle");
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        ZipOutputStream zip = new ZipOutputStream(outputStream);
        // 查询表信息
        TableInfo table = genMapper.selectTableByName(owner, tableName);
        // 查询列信息
        List<ColumnInfo> columns = genMapp
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十方天士

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值