news 2026/6/26 21:12:17

从下载到跑通第一个Java项目:IntelliJ IDEA 2020.1.4保姆级配置指南(含MySQL连接避坑)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从下载到跑通第一个Java项目:IntelliJ IDEA 2020.1.4保姆级配置指南(含MySQL连接避坑)

从零开始构建Java项目:IntelliJ IDEA 2020完整开发指南与MySQL实战

第一次打开IntelliJ IDEA时,那个深色主题的启动界面让我想起了科幻电影里的控制台。作为一个从Python转Java的开发者,我清楚地记得当时面对这个"宇宙第一Java IDE"时的敬畏感——功能强大但略显复杂。本文将带你完整走过从安装到运行第一个数据库项目的全过程,特别针对那些官方文档没细说但实际开发一定会遇到的坑。

1. 环境准备与IDE安装

在开始Java之旅前,我们需要搭建好开发环境。虽然现在有更新的IntelliJ IDEA版本,但2020.1.4仍然是个非常稳定的选择,特别是对初学者而言。

1.1 获取安装包

访问JetBrains官网下载社区版(Community Edition),这个版本对学习Java完全够用。注意区分:

  • Ultimate版:付费版本,支持更多企业级功能
  • Community版:免费开源,适合Java SE开发

提示:安装前请确保系统已安装JDK 8或以上版本,可通过java -version命令验证

1.2 安装过程详解

运行安装程序时,有几个关键选项需要注意:

  1. 安装路径:建议选择非系统盘,如D:\Dev\IntelliJ
  2. 关联文件类型:勾选.java.jar文件关联
  3. 创建桌面快捷方式:方便快速启动
  4. 添加PATH变量:勾选"Add launchers dir to the PATH"

安装完成后首次启动时,建议选择Darcula主题(深色模式),这对长时间编码更友好。初始化设置中,有几点值得注意:

# 验证JDK安装的终端命令 java -version javac -version

1.3 初始配置优化

第一次使用IDEA,建议进行以下配置调整:

配置项推荐值作用
字体大小14-16px保护视力
自动导入开启自动添加import语句
代码补全开启提高编码效率
内存设置1024MB+提升运行流畅度

这些设置可以在File -> Settings中找到,配置好后点击"Apply"保存。

2. 创建第一个Java项目

2.1 项目初始化

点击"New Project",选择Java模块,这里有几个关键选项:

  1. Project SDK:选择已安装的JDK版本
  2. Additional Libraries:暂时不添加
  3. Project template:选择"Command Line App"

创建项目时,建议采用标准的Maven目录结构:

my-first-project ├── src │ ├── main │ │ ├── java # 存放Java源代码 │ │ └── resources # 配置文件 │ └── test # 测试代码 └── pom.xml # Maven配置文件

2.2 编写Hello World

在src/main/java下新建Main.java文件:

public class Main { public static void main(String[] args) { System.out.println("Hello, Java World!"); } }

右键点击编辑器,选择"Run Main.main()",你将在控制台看到输出。恭喜,你的第一个Java程序运行成功了!

2.3 项目结构解析

理解IDEA的项目结构对后续开发很重要:

  • External Libraries:项目依赖的库
  • Scratches:临时测试文件
  • .idea目录:IDE的配置文件
  • out目录:编译输出的class文件

注意:不要手动修改.idea目录下的文件,这些是IDEA自动生成的配置文件

3. 连接MySQL数据库

3.1 准备MySQL环境

在连接数据库前,确保:

  1. MySQL服务已安装并运行
  2. 创建了测试数据库和用户
  3. 知道数据库的连接信息(主机、端口、用户名、密码)

可以通过以下命令验证MySQL服务状态:

# Linux/Mac sudo systemctl status mysql # Windows net start mysql

3.2 添加MySQL驱动

Java通过JDBC连接数据库,需要添加MySQL连接器:

  1. 下载mysql-connector-java-8.0.xx.jar
  2. 在项目中创建lib目录
  3. 将jar文件拖入lib目录
  4. 右键jar文件 -> Add as Library

或者通过Maven添加依赖(推荐):

<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.26</version> </dependency>

3.3 数据库连接代码

创建一个新的Java类DatabaseConnection.java

import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class DatabaseConnection { private static final String URL = "jdbc:mysql://localhost:3306/test_db"; private static final String USER = "root"; private static final String PASSWORD = "yourpassword"; public static Connection getConnection() throws SQLException { return DriverManager.getConnection(URL, USER, PASSWORD); } public static void main(String[] args) { try (Connection conn = getConnection()) { System.out.println("数据库连接成功!"); } catch (SQLException e) { System.err.println("连接失败: " + e.getMessage()); } } }

运行这段代码,如果看到"数据库连接成功",说明配置正确。

4. 常见问题与解决方案

4.1 驱动加载问题

问题现象ClassNotFoundException: com.mysql.jdbc.Driver

解决方案

  1. 确认驱动jar包已正确添加为库
  2. 更新驱动类名为com.mysql.cj.jdbc.Driver(新版驱动)
  3. 检查JDBC URL格式是否正确
// 旧版驱动(5.x) Class.forName("com.mysql.jdbc.Driver"); // 新版驱动(8.x) Class.forName("com.mysql.cj.jdbc.Driver");

4.2 时区问题

问题现象The server time zone value is unrecognized

解决方案:在JDBC URL中添加时区参数

String url = "jdbc:mysql://localhost:3306/test_db?serverTimezone=UTC";

4.3 连接泄漏问题

最佳实践:使用try-with-resources确保资源释放

try (Connection conn = DriverManager.getConnection(url, user, password); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM users")) { // 处理结果集 } catch (SQLException e) { e.printStackTrace(); }

4.4 性能优化建议

  1. 使用连接池:如HikariCP
  2. 预处理语句:使用PreparedStatement防止SQL注入
  3. 批量操作:对于大量数据使用addBatch/executeBatch
// 使用PreparedStatement示例 String sql = "INSERT INTO users (name, email) VALUES (?, ?)"; try (PreparedStatement pstmt = conn.prepareStatement(sql)) { pstmt.setString(1, "张三"); pstmt.setString(2, "zhangsan@example.com"); pstmt.executeUpdate(); }

5. 完整项目实战:学生管理系统

现在我们将前面学到的知识整合起来,构建一个简单的学生信息管理系统。

5.1 数据库设计

首先创建数据库表:

CREATE DATABASE student_management; USE student_management; CREATE TABLE students ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL, age INT, gender VARCHAR(10), major VARCHAR(50) );

5.2 实体类创建

创建Student实体类:

public class Student { private int id; private String name; private int age; private String gender; private String major; // 构造方法、getter和setter省略 }

5.3 DAO层实现

创建StudentDAO类处理数据库操作:

public class StudentDAO { private static final String INSERT_SQL = "INSERT INTO students (name, age, gender, major) VALUES (?, ?, ?, ?)"; private static final String SELECT_ALL_SQL = "SELECT * FROM students"; public void addStudent(Student student) throws SQLException { try (Connection conn = DatabaseConnection.getConnection(); PreparedStatement pstmt = conn.prepareStatement(INSERT_SQL)) { pstmt.setString(1, student.getName()); pstmt.setInt(2, student.getAge()); pstmt.setString(3, student.getGender()); pstmt.setString(4, student.getMajor()); pstmt.executeUpdate(); } } public List<Student> getAllStudents() throws SQLException { List<Student> students = new ArrayList<>(); try (Connection conn = DatabaseConnection.getConnection(); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(SELECT_ALL_SQL)) { while (rs.next()) { Student student = new Student(); student.setId(rs.getInt("id")); student.setName(rs.getString("name")); student.setAge(rs.getInt("age")); student.setGender(rs.getString("gender")); student.setMajor(rs.getString("major")); students.add(student); } } return students; } }

5.4 主程序实现

最后创建Main类作为程序入口:

public class Main { public static void main(String[] args) { StudentDAO studentDAO = new StudentDAO(); // 添加学生 Student student1 = new Student(); student1.setName("李四"); student1.setAge(20); student1.setGender("男"); student1.setMajor("计算机科学"); try { studentDAO.addStudent(student1); System.out.println("学生添加成功!"); // 查询所有学生 List<Student> students = studentDAO.getAllStudents(); System.out.println("\n学生列表:"); for (Student s : students) { System.out.printf("ID: %d, 姓名: %s, 年龄: %d, 专业: %s%n", s.getId(), s.getName(), s.getAge(), s.getMajor()); } } catch (SQLException e) { System.err.println("数据库操作失败: " + e.getMessage()); } } }

运行这个程序,你将看到学生信息被成功添加到数据库并查询显示出来。这个简单的项目涵盖了Java数据库开发的核心流程,包括:

  1. 数据库连接配置
  2. 实体类设计
  3. DAO模式实现
  4. PreparedStatement使用
  5. 资源管理和异常处理

在实际项目中,你还可以进一步扩展功能,如:

  • 添加学生信息修改和删除功能
  • 实现分页查询
  • 添加用户界面(控制台或Web)
  • 引入日志系统
  • 添加单元测试

记得在开发过程中经常使用IDEA的代码提示和重构功能,它们能显著提高开发效率。遇到问题时,善用IDEA的调试工具和数据库工具窗口,它们能帮你快速定位问题。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/23 19:35:06

开发邻里结伴遛弯运动匹配程序,根据作息爱好匹配同城邻居,解决独居独处孤单问题。

基于创新思维与创业实验方法的「邻里结伴遛弯运动匹配程序&#xff0c;保持中立、去营销化、无引流。一、实际应用场景描述典型城市居住场景&#xff1a;- 很多年轻人 / 独居老人长期一个人生活- 下班或周末想出门走走&#xff0c;但没人陪- 对小区邻居几乎不认识- 想运动&…

作者头像 李华
网站建设 2026/6/23 19:35:23

仓储管理标准操作程序SOP

导语大家好&#xff0c;我是社长&#xff0c;老K。专注分享智能制造和智能仓储物流等内容。欢迎大家使用我们的仓储物流技术AI智能体。专业书籍&#xff1a;《智能物流系统构成与技术实践》|《智能仓储项目英语手册》|《智能仓储项目必坑手册》|《智能仓储项目甲方必读》|《12大…

作者头像 李华
网站建设 2026/6/23 19:41:38

CANape测量启动失败?系统盘空间不足的排查与优化指南

1. 问题现象与根源剖析最近在项目联调阶段&#xff0c;又遇到了一个让不少工程师头疼的“经典”问题&#xff1a;CANape软件在点击“Start Measurement”按钮后&#xff0c;毫无反应&#xff0c;或者短暂弹出启动界面后立刻闪退&#xff0c;测量根本无法开始。检查任务管理器&a…

作者头像 李华
网站建设 2026/6/23 19:35:22

新手教程使用Python快速开始调用Taotoken多模型

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 新手教程使用Python快速开始调用Taotoken多模型 面向刚接触AI接口的Python开发者&#xff0c;本教程将手把手教你如何通过Python代…

作者头像 李华