改造的目标
时隔2个多月的研发,11月25日,终于把Idea插件BG-BOOM的1.1.0版本搞上线了,本次更新勇哥也是百忙之中挤时间,加班加点开发为粉丝,目的也主要是帮助大家提升开发效率,有更多摸鱼和内卷时间;好了,切回正题,本次带来更新的功能有点diao,希望大家喜欢并点赞:
-  
提高创建SpringBoot项目的效率
-  
一键生成启动类、配置文件
 -  
自动导入springboot、springcloud、springcloudalibaba等起步依赖
 
 -  
 -  
提高启动、找启动类、找配置文件的效率
-  
一键启、停全部微服务
 -  
一键定位启动类
 
 -  
 -  
提高大家对数据库表直观理解
-  
提供了ER图,自动匹配逻辑主键
 
 -  
 -  
提高JPA开发的效率
-  
一键拷贝JPA的controller、service、pojo、dao等代码
 
 -  
 -  
提高Mariadb的使用
-  
直接在代码中,不用配置连接,一键打开Mariadb查询客户端
 
 -  
 
快速创建SpringBoot项目功能介绍
Idea自带创建工程功能的问题
一般在工作中,大多程序时通过Maven Archetype 来创建新项目和模块,这种基于骨架方式来创建项目有一些弊端:
骨架的资源需要通过网络下载,如果网络抖动下载丢失资源了,整个项目就崩溃了
骨架的资源需要通过网络下载,如果网速慢,则创建过程可能需要1~2分钟
骨架中默认包括的文件与实践开发的项目不符合,往往创建完成项目后,需要程序员手动删除
你是不是也是这样创建项目的呢?
 Bg-Boom是如何快速创建项目的
勇哥在插件中特制了一个项目创建的引导功能:
创建时输入启动类的名称、勾选默认导入的springboot-starter,项目创建的时候就会自动创建启动类,导入勾选的starter;这样创建的项目:
自动创建启动类;
自动在pom.xml中导入spring-boot的那些依赖;
自动创建application.yml配置文件,并设置基础属性
创建的工程也是maven项目,但是项目不是基于骨架创建,因此不走网络下载资源,因此创建效率自然高效,稳定。
秀一波:
 快速启停SpringBoot项目功能介绍
Idea自带项目启动的问题
idea的项目启动如果是单体项目,是没什么问题的,但是如果是微服务或者模块较多的情况下,就会存在以下问题:
第一次启动,需要一层一层的点击到启动类,让右键启动;如果启动的项目多、项目层级多,那么这是非常繁琐的
第N次启动,可以从快速启动下拉中、Services中启动,但是下拉选择和Services都是多层次设计,启动项目都要点击2次以上,对一项目多了,还是麻烦
 Bg-Boom是如何一键启动所有项目的
勇哥在插件中特制了一个快速启动栏:
自动扫描当前项目中的微服务(仅支持SpringBoot工程)
扫描到的微服务,自动显示到快速启动栏中
从快速启动栏中,你可以一键操作:
启动某个项目
停止某个项目
启动所有项目
停止所有项目
点击在浏览器中打开项目
定位启动类
如果快速启动栏中项目太多,也不需要担心,可以左右拖动,:)NICE
 在Bg-Boom中通过ER图熟悉数据库
现在在工作中,基本上表与表之间都不会使用外键约束,而是使用逻辑外键,这样的话,在Navicat这些常规数据库中ER模型中是不会画出表与表之间的关系,阻碍了大家对于表关系的快速掌握。因此勇哥自行开发了一套基于逻辑外键的ER图模型:
自动识别表中的逻辑外键(一般是以_id结尾的字段)
可以动态显示/关闭逻辑外键关联线
可以ER图保存为图片
可以自有拖动位置、拖动调整大小
 勇哥为此还写了横、竖两个刻度尺,帅不帅,刻度尺源码如下:给勇哥点个赞吧~~~,勇哥也需要你们的精神粮食
package com.madou.dbtool.uml.cantainer;
import javax.swing.*;
import java.awt.*;
/**
 * 刻度尺面板类
 */
public class RuleContainer extends JPanel implements ScaleFunction {
    // 背景颜色
    Color backgroudColor = Color.BLACK;
    // 刻度颜色
    Color fontColor = Color.WHITE;
    // 是否垂直
    boolean isVertical = false;
    // 左边距
    int left = 0;
    // 缩放比例,每走一格+-5
    int scale = 100;
    public RuleContainer() {
        this(false,0);
    }
    public RuleContainer(int left) {
        this(false,left);
    }
    public RuleContainer(boolean isVertical, int left){
        this.setLayout(null);
        this.setBackground(Color.RED);
        this.setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR));
        this.left = left;
        this.isVertical = isVertical;
        if(this.isVertical){
            this.setPreferredSize(new Dimension(20, -1));
        }else {
            this.setPreferredSize(new Dimension(-1, 20));
        }
    }
    public void drawX(Graphics graphics){
        int width = this.getWidth();
        int height = this.getHeight();
        int index = 0;
        int count = 0;
        double postion = left;
        int screenResolution = Toolkit.getDefaultToolkit().getScreenResolution();
        int step = (int) Math.round((screenResolution/25.4)/(scale/100F));
        Font font = Font.getFont("微软雅黑");
        graphics.setColor(fontColor);
        graphics.setFont(font);
        if(isVertical){
            if(scale<101) {
                height = (int) (height/(scale/100F));
            }
            while (postion<height){
                if(count%10==0){
                    graphics.drawLine(width/2,(int) postion,width,(int) postion);
                    graphics.drawString(""+index++, 0,(int) postion-1);
                }else{
                    if(count>0&&count%5==0){
                        graphics.drawLine(width * 3 / 5, (int) postion, width, (int) postion);
                    }else {
                        graphics.drawLine(width * 4 / 5, (int) postion, width, (int) postion);
                    }
                }
                postion+=step;
                count++;
            }
        }else{
            if(scale<101) {
                width = (int) (width / (scale / 100F));
            }
            while (postion<width){
                if(count%10==0){
                    graphics.drawLine((int) postion,height/2,(int) postion,height);
                    graphics.drawString(""+index++, (int) postion-3,height/2);
                }else{
                    if(count>0&&count%5==0){
                        graphics.drawLine((int) postion,height*3/5,(int) postion,height);
                    }else {
                        graphics.drawLine((int) postion,height*4/5,(int) postion,height);
                    }
                }
                postion+=step;
                count++;
            }
        }
    }
    @Override
    protected void paintComponent(Graphics graphics) {
        graphics.setColor(backgroudColor);
        graphics.fillRect(0,0,getWidth(),getHeight());
        drawX(graphics);
    }
    public static void main(String[] args) {
        JFrame jFrame = new JFrame("刻度尺");
        jFrame.setLayout(new BorderLayout());
        jFrame.setPreferredSize(new Dimension(600,600));
        RuleContainer scalePanel = new RuleContainer(false,30);
        jFrame.add(scalePanel,BorderLayout.NORTH);
        scalePanel = new RuleContainer(true,0);
        jFrame.add(scalePanel,BorderLayout.WEST);
        jFrame.setVisible(true);
        jFrame.pack();
    }
    @Override
    public void scale(int step) {
        scale+=step;
        if(scale<20){
            scale=20;
        }
        if(scale>500){
            scale=500;
        }
        applyZoom();
    }
    private void applyZoom() {
        setPreferredSize(new Dimension((int) (scale/100F * getWidth()), (int) (scale/100F * getHeight())));
        validate();
        repaint();
    }
    @Override
    public void reset() {
        scale=100;
        scale(0);
    }
}
 
在Bg-Ber中一键拷贝JPA代码
勇哥在插件增加了数据库客户端,在数据库客户端中新增了SQL逆向生成JPA代码的功能:
生成Controller
生成Service
生成ServiceImpl
生成Dao
生成Pojo
代码自动生成演示:
 在Bg-Boom中使用Mariadb客户端
Mariadb客户端依旧继承Mysql客户端的牛逼设计:
自动识别代码中的POJO类,并增加打开查询客户端的功能菜单和按钮
在查询客户端中自动生成JPA、Mybatis-plus相关代码
.........等等,此处省略N个功能描述
 
![[附源码]Python计算机毕业设计SSM晋中学院教室管理系统(程序+LW)](https://img-blog.csdnimg.cn/db651479d9524dffa6d6f3ca2d75b9a6.png)





![[附源码]计算机毕业设计小太阳幼儿园学生管理系统Springboot程序](https://img-blog.csdnimg.cn/312a5ce167264dd189ed255e4d517b01.png)

![[附源码]Python计算机毕业设计SSM教务管理系统(程序+LW)](https://img-blog.csdnimg.cn/865e25fea1bf46bfb0deac82dc19db31.png)










