idea常用插件

idea自带的小工具

  • 1.如何使用IDEA中自带的数据库database!
  • 2.idea database生成表实体
  • 3.翻译插件--idea2021
  • 4.idea免费试用30天
  • 5.分析pom的依赖书,并且可以分析版本冲突
  • 6.实体类省略getset的方法
  • 7.彩虹代码块,更好看的代码高亮
  • 8.过滤筛选出来自己想看的日志,可以设置颜色----GrepConsole
  • 9.生成bean,mapper,mapper.xml
  • 10.实体类自动生成建表语句
  • 11.CodeGlance 代码迷你缩放图插件
  • 12.IDEA设置中文版API
  • 13.减少代码错误率代码提示
  • 14.这个插件需要注意的--牛逼
    Mybatis 使用MybatisCodeHelperPro插件快速开发 流程

本文纯属个人笔记自己使用有关文章是在其他渠道摘要过来将会附带摘要的路径

1.如何使用IDEA中自带的数据库database!

首先打开IDEA页面,我们先添加database
详情参考路径

首先打开IDEA页面,我们先添加database
idea常用插件_第1张图片添加后我们就可以在这里打开了!
idea常用插件_第2张图片
添加MySQL数据库
idea常用插件_第3张图片
打开后自己填入信息(测试时,可能会出现无效时区问题,继续看有详细解决办法!)
点击确定后会下载相应驱动,等待即可!

idea常用插件_第4张图片
注意: 如果在测试连接的时候出现了如下错误,点击如下博文解决此问题!
服务器返回无效时区解决
idea常用插件_第5张图片
选择自己用的数据库
idea常用插件_第6张图片

查看数据库中的表结构
idea常用插件_第7张图片
查看表的SQL语句
idea常用插件_第8张图片

新建查询,查询SQL语句
idea常用插件_第9张图片
1.创建表
idea常用插件_第10张图片
idea常用插件_第11张图片
方法2:

参考别的表,直接用语句,右键-DDL and Sources-
idea常用插件_第12张图片
然后直接在控制台修改
idea常用插件_第13张图片
修改后直接运行,表就建好了
2.备份表

先用上面的建表方法建好相同字段的表,然后复制表数据就可以(下面直接展示如何复制内容) :右键-Copy Table to
idea常用插件_第14张图片
然后直接确定就OK

3.查看表结构:右键-Modify Table

4.把表数据直接导出成实体类 右键-scripted Extensions-Generate POLOs.clj
idea常用插件_第15张图片
然后选择你需要导出的文件夹就OK了
idea常用插件_第16张图片

2.idea database生成表实体

  1. 配置数据源
    idea常用插件_第17张图片
  2. 配置Generate POJOs.groovy
    数据库右击 Scripted Extensions - Go to Scripts Directory
import com.intellij.database.model.DasTable
import com.intellij.database.model.ObjectKind
import com.intellij.database.util.Case
import com.intellij.database.util.DasUtil
import java.io.*
import java.text.SimpleDateFormat

/*
 * Available context bindings:
 *   SELECTION   Iterable
 *   PROJECT     project
 *   FILES       files helper
 */
packageName = ""
typeMapping = [
        (~/(?i)tinyint|smallint|mediumint|int/)  : "Integer",
        (~/(?i)number/)                          : "Long",
        (~/(?i)bool|bit/)                        : "Boolean",
        (~/(?i)float|double|decimal|real/)       : "Double",
        (~/(?i)timestamp/)                       : "Timestamp",
        (~/(?i)datetime|date|time/)              : "Date",
        (~/(?i)blob|binary|bfile|clob|raw|image/): "InputStream",
        (~/(?i)/)                                : "String"
]

FILES.chooseDirectoryAndSave("Choose directory", "Choose where to store generated files") { dir ->
    SELECTION.filter { it instanceof DasTable && it.getKind() == ObjectKind.TABLE }.each { generate(it, dir) }
}

def generate(table, dir) {
    def className = javaClassName(table.getName(), true)
    def fields = calcFields(table)
    packageName = getPackageName(dir)
    PrintWriter printWriter = new PrintWriter(new OutputStreamWriter(new FileOutputStream(new File(dir, className + ".java")), "UTF-8"))
    printWriter.withPrintWriter { out -> generate(out, className, fields, table) }
}

// 获取包所在文件夹路径
def getPackageName(dir) {
    return dir.toString().replaceAll("\\\\", ".").replaceAll("/", ".").replaceAll("^.*src(\\.main\\.java\\.)?", "") + ";"
}
def generate(out, className, fields, table) {
    out.println "package $packageName"
    out.println ""
    out.println "import javax.persistence.GeneratedValue"
    out.println "import javax.persistence.Column;"
    out.println "import javax.persistence.Entity;"
    out.println "import javax.persistence.Table;"
    out.println "import javax.persistence.Id"
    out.println "import java.sql.Timestamp;"
    out.println "import com.fasterxml.jackson.annotation.JsonIgnoreProperties;"
    Set types = new HashSet()
    fields.each() {
        types.add(it.type)
    }
    if (types.contains("Date")) {
        out.println "import java.util.Date;"
    }
    if (types.contains("InputStream")) {
        out.println "import java.io.InputStream;"
    }
    out.println ""
    out.println "/**\n" +
            " *  \n" +
            " * @author  JunLin\n" +
            " * @Timestamp " + new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date()) + " \n" +
            " */"
    out.println ""
    out.println "@Entity"
    out.println "@Table(name =\"" + table.getName() + "\")"
    out.println "@SequenceGenerator(name = \"\", sequenceName = \"\", initialValue = 1, allocationSize = 1)"
    out.println "@JsonIgnoreProperties(ignoreUnknown = true)"
    out.println "public class $className  extends NonIDEntity<$className> {"
    out.println ""
    fields.each() {
        out.println ""
        // 输出注释
        if (isNotEmpty(it.commoent)) {
            out.println "\t/**"
            out.println "\t * ${it.commoent.toString()}"
            out.println "\t */"
        }
        if (it.annos != "") out.println "   ${it.annos.replace("[@Id]", "")}"

        // 输出成员变量
        out.println "\tprivate ${it.type} ${it.name};"
    }
    //输出get/set方法
    fields.each() {
        out.println ""
        out.println "\tpublic ${it.type} get${it.name.capitalize()}() {"
        out.println "\t\treturn this.${it.name};"
        out.println "\t}"
        out.println ""
        out.println "\tpublic void set${it.name.capitalize()}(${it.type} ${it.name}) {"
        out.println "\t\tthis.${it.name} = ${it.name};"
        out.println "\t}"
    }
    out.println ""
    out.println "}"
}

def calcFields(table) {
    DasUtil.getColumns(table).reduce([]) { fields, col ->
        def spec = Case.LOWER.apply(col.getDataType().getSpecification())
        def typeStr = typeMapping.find { p, t -> p.matcher(spec).find() }.value
        def comm = [
                colName : col.getName(),
                name    : javaName(col.getName(), false),
                type    : typeStr,
                commoent: col.getComment(),
                annos   : ""]
        if ("id".equals(Case.LOWER.apply(col.getName()))) {
            comm.annos += "\n\t@Id"
            comm.annos += "\n\t@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = \"\")"
            comm.annos += "\n\t@Column(name = \"" + col.getName() + "\", nullable = false, precision = 0 )"
        } else {
            comm.annos += "\t@Column(name = \"" + col.getName() + "\" ,nullable = true)"
        }
        fields += [comm]
    }
}

// 处理类名(这里是因为我的表都是以t_命名的,所以需要处理去掉生成类名时的开头的T,
// 如果你不需要那么请查找用到了 javaClassName这个方法的地方修改为 javaName 即可)
def javaClassName(str, capitalize) {
    def s = com.intellij.psi.codeStyle.NameUtil.splitNameIntoWords(str)
            .collect { Case.LOWER.apply(it).capitalize() }
            .join("")
            .replaceAll(/[^\p{javaJavaIdentifierPart}[_]]/, "_")
    // 去除开头的T 
    s = s[1..s.size() - 1]
    capitalize || s.length() == 1 ? s : Case.LOWER.apply(s[0]) + s[1..-1]
}

def javaName(str, capitalize) {
//    def s = str.split(/(?<=[^\p{IsLetter}])/).collect { Case.LOWER.apply(it).capitalize() }
//            .join("").replaceAll(/[^\p{javaJavaIdentifierPart}]/, "_")
//    capitalize || s.length() == 1? s : Case.LOWER.apply(s[0]) + s[1..-1]
    def s = com.intellij.psi.codeStyle.NameUtil.splitNameIntoWords(str)
            .collect { Case.LOWER.apply(it).capitalize() }
            .join("")
            .replaceAll(/[^\p{javaJavaIdentifierPart}[_]]/, "_")
    capitalize || s.length() == 1 ? s : Case.LOWER.apply(s[0]) + s[1..-1]
}

def isNotEmpty(content) {
    return content != null && content.toString().trim().length() > 0
}

static String changeStyle(String str, boolean toCamel) {
    if (!str || str.size() <= 1)
        return str

    if (toCamel) {
        String r = str.toLowerCase().split('_').collect { cc -> Case.LOWER.apply(cc).capitalize() }.join('')
        return r[0].toLowerCase() + r[1..-1]
    } else {
        str = str[0].toLowerCase() + str[1..-1]
        return str.collect { cc -> ((char) cc).isUpperCase() ? '_' + cc.toLowerCase() : cc }.join('')
    }
}

static String genSerialID() {
    return "\tprivate static final long serialVersionUID =  " + Math.abs(new Random().nextLong()) + "L;"
}

  1. 生成实体
    选择需要生成的table右击 Scripted Extensions - Generate POJOs.groovy

3.翻译插件–idea2021

File----Plugins----Translation----重启idea
快捷键 ctrl+shift+Y
idea常用插件_第18张图片

一定不要勾选 使用translate.google.com
idea常用插件_第19张图片

设置完成点击ok
3.选中单词或段落 使用快捷键 ctrl+shift+y 即可查看
idea常用插件_第20张图片

4.idea免费试用30天

https://plugins.zhile.io
idea常用插件_第21张图片

idea常用插件_第22张图片点击该标识
idea常用插件_第23张图片

5.分析pom的依赖书,并且可以分析版本冲突

IDEA内部下载Maven Helper插件
IDEA设置:已打开软件:File–> Setting–>Plugins
未打开IDEA内:Configure --> Project Defaults --> Settings–>Plugins
idea常用插件_第24张图片
idea常用插件_第25张图片
(2)官网下载
idea常用插件_第26张图片
idea常用插件_第27张图片
需要注意根据自己idea的版本下载插件
下载后本地安装
idea常用插件_第28张图片
2.使用

安装后会提示重启,重启完以后打开pom文件在下方会有类似eclips的多选项卡,切换到dependency analyzer 选项卡即可。
idea常用插件_第29张图片

注释:
idea常用插件_第30张图片

6.实体类省略getset的方法

1.插件安装
打开Idea, 左上角菜单选择 ”File --> Settings", 在弹出的对话框中,左侧选择Plugins,搜索栏输入“lombok", 然后点击安装,如下图:
idea常用插件_第31张图片
图中按钮是卸载,因为我这里已经提前安装好了。读者在安装后,IDE会提示重启生效。此时,重启IDEA即可开始使用。

2.插件使用

在项目的pom文件中添加lombok依赖,注意此处scope填写provided,代表这个包不需要打包发布,仅编译时需要用到,且已有提供方。

pom.xml

在模型类上,添加注解 @Data,即可省去手写getter, setter, toString的麻烦,如下图:
idea常用插件_第32张图片
只需要这样一个简单的注解,在其他地方,就可以调用sysAdmin的getUsername()方法了。

7.彩虹代码块,更好看的代码高亮

通过 Settings-> Plugins -> Marketplace 进入插件市场选择并下载安装,完成后重启就生效了。
idea常用插件_第33张图片
idea常用插件_第34张图片
idea常用插件_第35张图片

8.过滤筛选出来自己想看的日志,可以设置颜色----GrepConsole

配置好各级日志的前景色

idea常用插件_第36张图片效果如下
idea常用插件_第37张图片

9.生成bean,mapper,mapper.xml

MyBatisCodeHelperPro
在开发中编写生成bean,mapper,mapper.xml即费时也费力,可以通过MyBatisCodeHelper-Pro自动生成bean,dao,mapper.xml等文件,然后根据自己的需要进行修改。
下载MyBatisCodeHelper-Pro插件包到本地,在IDEA中安装此插件
idea常用插件_第38张图片
idea常用插件_第39张图片
重启IDEA即可,另外可以设置MyBatisCodeHelper-Pro插件属性
idea常用插件_第40张图片
老版本激活方式:Tools -> MybatisCodeHelper -> offlineActivation,输入任意字符串
idea常用插件_第41张图片

10.实体类自动生成建表语句

创建实体类Person

package com.coody.mtdemo.entity;
import java.util.Date;
import lombok.Data;
/** 
* @Classname Person 
* 
* @Description TODO 
* @Author lw 
* @Date 2020-03-16 10:56 */
@Datapublicclass 
Person {
 /** * 主键ID */
 private Integer id; 
 /** * 角色账户 */
 private String roleAcc; 
 /** * 角色代码 */
 private String roleCode;
  /** * 角色名称 */
  private String roleName; 
  /** * 创建时间 */
  private Date dateCreated;
  }
  

在实体累对象中,点击鼠标右键,选择Generate,再点击generate mybatis files
idea常用插件_第42张图片
idea常用插件_第43张图片
unique:唯一索引,不可重复;

index:普通索引,可重复;

根据需要进行编辑,然后点击OK
idea常用插件_第44张图片
根据需要调整建表语句后,然后在数据库中执行即可。

2.表创建后,生成bean、mapper、mapper.xml

打开IDEA,Database窗口
idea常用插件_第45张图片
选择要生成代码对应的表(如Person),点击右键
idea常用插件_第46张图片
点击MyBatis generator,弹出生成代码窗口
idea常用插件_第47张图片
idea常用插件_第48张图片
点击OK,代码即生成,根据需要做对应的修改即可
idea常用插件_第49张图片

11.CodeGlance 代码迷你缩放图插件

在编辑代码最右侧,显示一块代码小地图 这款插件使用效果图如下,个人感觉还是有点用处,滚动条太小,有这个地图,拖动起来更加方便一点
idea常用插件_第50张图片
idea常用插件_第51张图片

12.IDEA设置中文版API

首先,我们下载好对应的java最新的中文api文档。–待后期完善
在IDEA中设置文档的路径
idea常用插件_第52张图片
这样我们就设置好啦
idea常用插件_第53张图片

13.减少代码错误率代码提示

Codota
代码提示工具,扫描你的代码后,根据你的敲击完美提示

Codota基于数百万个开源Java程序和您的上下文来完成代码行,从而帮助您以更少的错误更快地进行编码。
idea常用插件_第54张图片
安装
idea常用插件_第55张图片

14.这个插件需要注意的–牛逼

Mybatis 使用MybatisCodeHelperPro插件快速开发 流程

如何达到最快的效率 下面是我的开发流程
java类生成crud 不再推荐使用 各种功能没有数据库生成crud 方便 数据库生成crud 在表字段 添加减少字段 合并代码也做得更好

数据库的话 首先要建表 直接写建表语句比较麻烦 我们可以通过java类生成建表语句来生成好

我们先写一个超级简单的java类 啥也不需要加 private也不需要 这个类只是用来生成建表语句
查看演示(打开如果有问题请不要关闭原网页再刷新一下原先的网址就可以了)
或者复制下面的连接打开查看演示视频(由于本文只支持腾讯视频、优酷视频、哔哩哔哩视频)

https://upload-images.jianshu.io/upload_images/11962894-4d6e4746758c2ffa.gif?imageMogr2/auto-orient/strip%7CimageView2/2/w/1101

生成好了建表语句后 到数据库执行下 然后从数据库来生成crud代码
(使用IDEA高级版的用户直接到IDEA高级版的数据库执行就行)
这时就可以选择各种配置了

在数据库添加 减少字段后 到数据库 重新生成下就好了

当我们数据库用的tinyInt 或者 smallInt这种 生成java类型 是 byte 和 short 两种类型

在java代码里面操作 byte 和 short 类型 比较麻烦 经常需要 强制转换 这是可以配置下 设置 使用Integer 来替代byte和short

作者:葛俊_0f97
链接:https://www.jianshu.com/p/30da9258aa81
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
idea常用插件_第56张图片
在数据库生成crud时 部分用户可能会勾选 生成example 这个选项

我建议使用 方法名生成sql 来替代生成example这个

首先可以避免生成一大堆的example文件 xml中的example代码看起来也很恶心

写方法名生成sql 的效率也比写example来得快

看xml也很清楚 到底进行了啥操作

另外2.5版本 将支持 定制sql 数据库生成crud中 默认生成的那些语句 比如deleteByPrimaryKey 有不需要的可以一开始就给干掉
如果之后要的话 可以从数据库重新来生成 比如batchInsert 这种 只有当前表需要的时候才来生成

另外我也不推荐 mapper接口做继承 现在代码都是自动生成的,mapper做继承仅能减少一些代码量,没有看到什么其他的效率提升。搞了继承后 看mapper接口 对应的xml 也变得比较麻烦 哪些方法要放到继承里面也比较难定义,有可能某些接口继承的方法根本用不到, 我的建议是每个接口 只生成自己需要的xml方法, 比如batchInsert这个,有个表需要 有的表并不需要。

你可能感兴趣的:(后端,idea)