Java项目的目录结构会根据项目规模和使用的框架有所不同。下面为你介绍一个包含数据库操作的Java小项目的典型目录结构。
标准Maven项目结构
project-root/
├── src/
│ ├── main/
│ │ ├── java/ # 源代码
│ │ │ └── com/
│ │ │ └── example/
│ │ │ └── project/
│ │ │ ├── config/ # 配置类
│ │ │ ├── controller/# 控制器层(处理HTTP请求)
│ │ │ ├── dao/ # 数据访问对象层
│ │ │ ├── model/ # 实体类
│ │ │ ├── service/ # 业务逻辑层
│ │ │ ├── util/ # 工具类
│ │ │ └── Application.java # 应用入口
│ │ ├── resources/ # 资源文件
│ │ │ ├── db/ # 数据库相关
│ │ │ │ ├── migrations/ # 数据库迁移脚本
│ │ │ │ └── scripts/ # SQL脚本
│ │ │ ├── application.properties # 应用配置
│ │ │ └── log4j.properties # 日志配置
│ │ └── webapp/ # Web应用资源(仅适用于Web项目)
│ │ ├── WEB-INF/
│ │ │ ├── web.xml # Web应用配置
│ │ │ └── views/ # JSP视图(如果使用)
│ │ └── static/ # 静态资源
│ │ ├── css/
│ │ ├── js/
│ │ └── images/
│ └── test/ # 测试代码
│ ├── java/
│ └── resources/
└── pom.xml # Maven配置文件
各模块的主要功能
-
config/ 配置类
- 包含数据库连接配置、Spring配置等
- 示例类:
DataSourceConfig.java
、AppConfig.java
-
controller/ 控制器层
- 处理HTTP请求,返回视图或JSON数据
- 示例类:
UserController.java
、ProductController.java
-
dao/ 数据访问层
- 与数据库交互,执行CRUD操作
- 示例类:
UserDao.java
、ProductDao.java
- 可使用JDBC、MyBatis、Hibernate等实现
-
model/ 实体类
- 映射数据库表结构
- 示例类:
User.java
、Product.java
-
service/ 业务逻辑层
- 实现业务逻辑,调用DAO层
- 示例类:
UserService.java
、ProductService.java
-
util/ 工具类
- 包含常用工具方法
- 示例类:
DateUtil.java
、StringUtils.java
-
db/ 数据库相关
migrations/
:存放数据库迁移脚本(如Flyway或Liquibase)scripts/
:存放SQL脚本(建表语句、初始化数据等)
数据库操作示例代码
下面是一个简单的数据库操作示例(使用JDBC):
// model/User.java
public class User {
private int id;
private String username;
private String email;
// getters and setters
}
// dao/UserDao.java
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class UserDao {
private static final String URL = "jdbc:mysql://localhost:3306/mydb";
private static final String USER = "root";
private static final String PASSWORD = "password";
public List<User> getAllUsers() {
List<User> users = new ArrayList<>();
String sql = "SELECT * FROM users";
try (Connection conn = DriverManager.getConnection(URL, USER, PASSWORD);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql)) {
while (rs.next()) {
User user = new User();
user.setId(rs.getInt("id"));
user.setUsername(rs.getString("username"));
user.setEmail(rs.getString("email"));
users.add(user);
}
} catch (SQLException e) {
e.printStackTrace();
}
return users;
}
// 其他CRUD方法...
}
// service/UserService.java
public class UserService {
private UserDao userDao = new UserDao();
public List<User> getAllUsers() {
return userDao.getAllUsers();
}
// 其他业务方法...
}
数据库配置文件示例
# src/main/resources/application.properties
jdbc.url=jdbc:mysql://localhost:3306/mydb
jdbc.username=root
jdbc.password=password
jdbc.driverClassName=com.mysql.cj.jdbc.Driver
这个目录结构可以根据项目实际需求进行调整,例如添加更多的模块或使用不同的技术栈。如果使用Spring Boot,目录结构会更加简化,但基本的模块划分原则是相似的。