时隔2个多月的研发,11月25日,终于把Idea插件BG-BOOM的1.1.0版本搞上线了,本次更新勇哥也是百忙之中挤时间,加班加点开发为粉丝,目的也主要是帮助大家提升开发效率,有更多摸鱼和内卷时间;好了,切回正题,本次带来更新的功能有点diao,希望大家喜欢并点赞:
一般在工作中,大多程序时通过Maven Archetype 来创建新项目和模块,这种基于骨架方式来创建项目有一些弊端:
你是不是也是这样创建项目的呢?
你是这样创建项目的吗?
勇哥在插件中特制了一个项目创建的引导功能:
秀一波:
勇哥和粉丝是这样创建项目的,效率高呀!
idea的项目启动如果是单体项目,是没什么问题的,但是如果是微服务或者模块较多的情况下,就会存在以下问题:
开发10多年,这样启动项目,我早就烦了
勇哥在插件中特制了一个快速启动栏:
勇哥和粉丝专属IDEA 快速启动条
现在在工作中,基本上表与表之间都不会使用外键约束,而是使用逻辑外键,这样的话,在Navicat这些常规数据库中ER模型中是不会画出表与表之间的关系,阻碍了大家对于表关系的快速掌握。因此勇哥自行开发了一套基于逻辑外键的ER图模型:
粉丝过1W,这个图源码我就免费公开,你敢不敢点个关注,赌一赌?
勇哥为此还写了横、竖两个刻度尺,帅不帅,刻度尺源码如下:给勇哥点个赞吧~~~,勇哥也需要你们的精神粮食
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);
}
}
勇哥在插件增加了数据库客户端,在数据库客户端中新增了SQL逆向生成JPA代码的功能:
代码自动生成演示:
认真看,你们还有Mybatis-plus的代码拷贝,不够,粉丝可以继续提
Mariadb客户端依旧继承Mysql客户端的牛逼设计:
不用配置数据源,自动识别的,速度比DataGrip快