热门课程

免费试听

上课方式

开班时间

当前位置: 首页 -   文章 -   根域文章 -   正文

IDEA连接数据库

zhiliaoadmin
2022-01-31 10:00:46
0

1、为什么要用IDEA连接数据库

  • 写sql语句有非常好的智能提示,代码写起来很流畅

  • 可以用IDEA的快捷键,操作方便,感觉很爽

  • 可以很方便的保存sql语句

  • 不用切换应用,直接在IDEA中就可以完成对数据库的操作

  • 强迫自己多认识几个英文单词

2、用IDEA怎么连接数据库

IDEA连接数据库

IDEA连接数据库

IDEA连接数据库

IDEA连接数据库

IDEA连接数据库

IDEA连接数据库

IDEA连接数据库

3、用IDEA如何操作数据库

用IDEA怎么连接数据库

用IDEA怎么连接数据库

用IDEA怎么连接数据库

用IDEA怎么连接数据库


4、在IDEA中写sql语句

在IDEA中写sql语句

在IDEA中写sql语句


5、保存项目的sql语句

保存项目的sql语句

保存项目的sql语句

保存项目的sql语句

例如,把原有的Generate POJOs.groovy复制一份,重命名为Generate Lombok POJOs.groovy,然后修改为以下内容(这是使用了Lombok的,如果不需要Lombok,请根据原有的脚本以及以下的注释自行修改):

import com.intellij.database.model.DasTable
import com.intellij.database.util.Case
import com.intellij.database.util.DasUtil
import java.time.LocalDateTime
/*
* Available context bindings:
*   SELECTION   Iterable<DasObject>
*   PROJECT     project
*   FILES       files helper
*/
// 此处指定包路径,路径需要自行维护;
packageName = "com.lian.pojo;"
// 此处指定对应的类型映射,可按需修改,目前tinyint如果要映射到自定义枚举类型,只能手动修改
typeMapping = [
       (~/(?i)bigint/)                 : "Long",
       (~/(?i)int/)                    : "Integer",
       (~/(?i)tinyint/)                : "Boolean",
       (~/(?i)float/)                  : "Float",
       (~/(?i)double/)                 : "Double",
       (~/(?i)decimal/)                : "BigDecimal",
       (~/(?i)time|datetime|timestamp/): "Timestamp",
       (~/(?i)date/)                   : "Date",
       (~/(?i)/)                       : "String"
]
// 上面用到类和它的导入路径的之间的映射
importMap = [
       "BigDecimal": "java.math.BigDecimal",
       "Date"      : "java.util.Date",
       "Timestamp" : "java.sql.Timestamp",
]
// 导入路径列表,下面引用的时候会去重,也可以直接声明成一个 HashSet
importList = []
// 弹出选择文件的对话框
FILES.chooseDirectoryAndSave("Choose directory", "Choose where to store generated files") { dir ->
   SELECTION.filter { it instanceof DasTable }.each { generate(it, dir) }
}
def generate(table, dir) {
   def className = javaName(table.getName(), true)
   def fields = calcFields(table)
   new File(dir, className + ".java").withPrintWriter { out -> generate(out, className, fields, table) }
}
// 从这里开始,拼实体类的具体逻辑代码
def generate(out, className, fields, table) {
   out.println "package $packageName"
   out.println ""
   // 引入所需的包
   out.println "import lombok.Data;"
   out.println "import lombok.NoArgsConstructor;"
   // 去重后导入列表
   importList.unique().each() { pkg ->
       out.println "import " + pkg + ";"
   }
   out.println ""
   // 添加类注释
   out.println "/**"
   // 如果添加了表注释,会加到类注释上
   if (isNotEmpty(table.getComment())) {
       out.println " * " + table.getComment()
   }
   out.println " * @project: "
   out.println " * @description: "
   out.println " * @author: xxx"
   out.println " * @create_time: " + LocalDateTime.now()
   out.println " */"
   // 添加类注解
   out.println "@Data"
   out.println "@NoArgsConstructor"
   out.println "public class $className {"
   out.println ""
   // 遍历字段,按下面的规则生成
   fields.each() {
       // 输出注释
       if (isNotEmpty(it.comment)) {
           out.println "\t/**"
           out.println "\t * ${it.comment}"
           out.println "\t */"
       }
       if (it.annos != "") out.println "  ${it.annos}"
       out.println "\tprivate ${it.type} ${it.name};"
       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
       if (importMap.containsKey(typeStr)) {
           importList.add(importMap.get(typeStr))
       }
       fields += [[
                          name   : javaName(col.getName(), false),
                          type   : typeStr,
                          comment: col.getComment(),
                          annos  : ""
                  ]]
   }
}
def isNotEmpty(content) {
   return content != null && content.toString().trim().length() > 0
}
def javaName(str, capitalize) {
   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]
}

小结:这样使用IDEA连接数据库以及配置就成功了,其实IDEA还是非常强大的,不管是连接数据库还是连接远程服务器,IDEA都能做到,还是省去了其他工具的事了,大家可以试试看。


大家都在看

java面试难吗?怎么提高面试成功率

2022-01-31 浏览次数:0

什么是java单例设计模式

2022-01-31 浏览次数:0

网络安全工程师培训哪家好?没基础可以学吗?

2022-01-31 浏览次数:0

遇到ddos攻击如何处理?ddos攻击如何解决?

2022-01-31 浏览次数:0

数据中心可视化方案

2022-01-31 浏览次数:0

学编程难吗?这样学编程,反超90%同龄人

2022-01-31 浏览次数:0
最新资讯
IDEA连接数据库 为什么要用IDEA连接数据库,用IDEA怎么连接数据库,用IDEA如何操作数据库,在IDEA中写sq...