• 我把Idea给改了,看看有没有你常用的功能,没有,你告诉我,我来改


    改造的目标

    时隔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次以上,对一项目多了,还是麻烦

    开发10多年,这样启动项目,我早就烦了

    Bg-Boom是如何一键启动所有项目的

    勇哥在插件中特制了一个快速启动栏:

    • 自动扫描当前项目中的微服务(仅支持SpringBoot工程)

    • 扫描到的微服务,自动显示到快速启动栏中

    • 从快速启动栏中,你可以一键操作

      • 启动某个项目

      • 停止某个项目

      • 启动所有项目

      • 停止所有项目

      • 点击在浏览器中打开项目

      • 定位启动类

    • 如果快速启动栏中项目太多,也不需要担心,可以左右拖动,:)NICE

    勇哥和粉丝专属IDEA 快速启动条

    在Bg-Boom中通过ER图熟悉数据库

    现在在工作中,基本上表与表之间都不会使用外键约束,而是使用逻辑外键,这样的话,在Navicat这些常规数据库中ER模型中是不会画出表与表之间的关系,阻碍了大家对于表关系的快速掌握。因此勇哥自行开发了一套基于逻辑外键的ER图模型:

    • 自动识别表中的逻辑外键(一般是以_id结尾的字段)

    • 可以动态显示/关闭逻辑外键关联线

    • 可以ER图保存为图片

    • 可以自有拖动位置、拖动调整大小

    粉丝过1W,这个图源码我就免费公开,你敢不敢点个关注,赌一赌?

    勇哥为此还写了横、竖两个刻度尺,帅不帅,刻度尺源码如下:给勇哥点个赞吧~~~,勇哥也需要你们的精神粮食

    1. package com.madou.dbtool.uml.cantainer;
    2. import javax.swing.*;
    3. import java.awt.*;
    4. /**
    5. * 刻度尺面板类
    6. */
    7. public class RuleContainer extends JPanel implements ScaleFunction {
    8. // 背景颜色
    9. Color backgroudColor = Color.BLACK;
    10. // 刻度颜色
    11. Color fontColor = Color.WHITE;
    12. // 是否垂直
    13. boolean isVertical = false;
    14. // 左边距
    15. int left = 0;
    16. // 缩放比例,每走一格+-5
    17. int scale = 100;
    18. public RuleContainer() {
    19. this(false,0);
    20. }
    21. public RuleContainer(int left) {
    22. this(false,left);
    23. }
    24. public RuleContainer(boolean isVertical, int left){
    25. this.setLayout(null);
    26. this.setBackground(Color.RED);
    27. this.setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR));
    28. this.left = left;
    29. this.isVertical = isVertical;
    30. if(this.isVertical){
    31. this.setPreferredSize(new Dimension(20, -1));
    32. }else {
    33. this.setPreferredSize(new Dimension(-1, 20));
    34. }
    35. }
    36. public void drawX(Graphics graphics){
    37. int width = this.getWidth();
    38. int height = this.getHeight();
    39. int index = 0;
    40. int count = 0;
    41. double postion = left;
    42. int screenResolution = Toolkit.getDefaultToolkit().getScreenResolution();
    43. int step = (int) Math.round((screenResolution/25.4)/(scale/100F));
    44. Font font = Font.getFont("微软雅黑");
    45. graphics.setColor(fontColor);
    46. graphics.setFont(font);
    47. if(isVertical){
    48. if(scale<101) {
    49. height = (int) (height/(scale/100F));
    50. }
    51. while (postion
    52. if(count%10==0){
    53. graphics.drawLine(width/2,(int) postion,width,(int) postion);
    54. graphics.drawString(""+index++, 0,(int) postion-1);
    55. }else{
    56. if(count>0&&count%5==0){
    57. graphics.drawLine(width * 3 / 5, (int) postion, width, (int) postion);
    58. }else {
    59. graphics.drawLine(width * 4 / 5, (int) postion, width, (int) postion);
    60. }
    61. }
    62. postion+=step;
    63. count++;
    64. }
    65. }else{
    66. if(scale<101) {
    67. width = (int) (width / (scale / 100F));
    68. }
    69. while (postion
    70. if(count%10==0){
    71. graphics.drawLine((int) postion,height/2,(int) postion,height);
    72. graphics.drawString(""+index++, (int) postion-3,height/2);
    73. }else{
    74. if(count>0&&count%5==0){
    75. graphics.drawLine((int) postion,height*3/5,(int) postion,height);
    76. }else {
    77. graphics.drawLine((int) postion,height*4/5,(int) postion,height);
    78. }
    79. }
    80. postion+=step;
    81. count++;
    82. }
    83. }
    84. }
    85. @Override
    86. protected void paintComponent(Graphics graphics) {
    87. graphics.setColor(backgroudColor);
    88. graphics.fillRect(0,0,getWidth(),getHeight());
    89. drawX(graphics);
    90. }
    91. public static void main(String[] args) {
    92. JFrame jFrame = new JFrame("刻度尺");
    93. jFrame.setLayout(new BorderLayout());
    94. jFrame.setPreferredSize(new Dimension(600,600));
    95. RuleContainer scalePanel = new RuleContainer(false,30);
    96. jFrame.add(scalePanel,BorderLayout.NORTH);
    97. scalePanel = new RuleContainer(true,0);
    98. jFrame.add(scalePanel,BorderLayout.WEST);
    99. jFrame.setVisible(true);
    100. jFrame.pack();
    101. }
    102. @Override
    103. public void scale(int step) {
    104. scale+=step;
    105. if(scale<20){
    106. scale=20;
    107. }
    108. if(scale>500){
    109. scale=500;
    110. }
    111. applyZoom();
    112. }
    113. private void applyZoom() {
    114. setPreferredSize(new Dimension((int) (scale/100F * getWidth()), (int) (scale/100F * getHeight())));
    115. validate();
    116. repaint();
    117. }
    118. @Override
    119. public void reset() {
    120. scale=100;
    121. scale(0);
    122. }
    123. }

    在Bg-Ber中一键拷贝JPA代码

    勇哥在插件增加了数据库客户端,在数据库客户端中新增了SQL逆向生成JPA代码的功能:

    • 生成Controller

    • 生成Service

    • 生成ServiceImpl

    • 生成Dao

    • 生成Pojo

    代码自动生成演示:

    认真看,你们还有Mybatis-plus的代码拷贝,不够,粉丝可以继续提

    在Bg-Boom中使用Mariadb客户端

    Mariadb客户端依旧继承Mysql客户端的牛逼设计:

    • 自动识别代码中的POJO类,并增加打开查询客户端的功能菜单和按钮

    • 在查询客户端中自动生成JPA、Mybatis-plus相关代码

    • .........等等,此处省略N个功能描述 

    不用配置数据源,自动识别的,速度比DataGrip快

     

     

  • 相关阅读:
    spring boot 下载resources下的静态文件为流格式
    Observability:使用 Elastic Observability 摄取和分析 Prometheus 指标
    网络协议--IP选路
    设计一个实用好看的餐边柜或者酒柜需要知道这5点。福州中宅装饰,福州装修
    Spring Security 在登录时如何添加图形验证码
    详解 Flink 的容错机制
    微信收款码费率0.38太坑了
    欧拉函数和线性筛法:AcWing 874. 筛法求欧拉函数
    使用easyexcel模板导出的两个坑(Map空数据列错乱和不支持嵌套对象)
    工业互联网安全概述
  • 原文地址:https://blog.csdn.net/luoxueyong/article/details/128175416