java项目dao模块
时间: 2023-06-19 13:03:06 浏览: 179
在Java项目中,DAO(Data Access Object)模块是负责与数据库进行交互的模块,用于封装数据库的操作,提供简单易用的接口,使业务逻辑层与数据访问层分离,从而提高代码的可维护性和可扩展性。
下面是一个简单的Java项目DAO模块的实现步骤:
1. 引入数据库驱动程序,如MySQL JDBC驱动。
2. 定义数据库连接类,该类负责与数据库建立连接,关闭连接等操作。
3. 定义DAO接口,该接口定义了对数据库进行增删改查操作的方法。
4. 实现DAO接口,该类实现了DAO接口定义的方法,包括对数据库进行增删改查的具体实现。
5. 在业务逻辑层中调用DAO接口的方法,实现业务逻辑与数据访问层的分离。
下面是一个简单的Java项目DAO模块的代码示例:
1. 引入数据库驱动程序
```java
import java.sql.*;
```
2. 定义数据库连接类
```java
public class DBUtil {
private static final String URL = "jdbc:mysql://localhost:3306/test";
private static final String USER = "root";
private static final String PASSWORD = "123456";
private static Connection conn = null;
public static Connection getConnection() throws SQLException {
if(conn == null){
conn = DriverManager.getConnection(URL, USER, PASSWORD);
}
return conn;
}
public static void closeConnection() throws SQLException{
if(conn != null){
conn.close();
conn = null;
}
}
}
```
3. 定义DAO接口
```java
public interface UserDao {
public boolean addUser(User user);
public boolean updateUser(User user);
public boolean deleteUser(int id);
public User getUserById(int id);
public List<User> getAllUsers();
}
```
4. 实现DAO接口
```java
public class UserDaoImpl implements UserDao {
private Connection conn;
public UserDaoImpl() throws SQLException {
conn = DBUtil.getConnection();
}
@Override
public boolean addUser(User user) {
try {
String sql = "insert into user(name, age, gender) values(?,?,?)";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, user.getName());
ps.setInt(2, user.getAge());
ps.setString(3, user.getGender());
ps.executeUpdate();
return true;
} catch (SQLException e) {
e.printStackTrace();
}
return false;
}
@Override
public boolean updateUser(User user) {
try {
String sql = "update user set name=?,age=?,gender=? where id=?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, user.getName());
ps.setInt(2, user.getAge());
ps.setString(3, user.getGender());
ps.setInt(4, user.getId());
ps.executeUpdate();
return true;
} catch (SQLException e) {
e.printStackTrace();
}
return false;
}
@Override
public boolean deleteUser(int id) {
try {
String sql = "delete from user where id=?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1, id);
ps.executeUpdate();
return true;
} catch (SQLException e) {
e.printStackTrace();
}
return false;
}
@Override
public User getUserById(int id) {
try {
String sql = "select * from user where id=?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1, id);
ResultSet rs = ps.executeQuery();
if(rs.next()){
User user = new User();
user.setId(rs.getInt("id"));
user.setName(rs.getString("name"));
user.setAge(rs.getInt("age"));
user.setGender(rs.getString("gender"));
return user;
}
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
@Override
public List<User> getAllUsers() {
List<User> userList = new ArrayList<>();
try {
String sql = "select * from user";
PreparedStatement ps = conn.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
while(rs.next()){
User user = new User();
user.setId(rs.getInt("id"));
user.setName(rs.getString("name"));
user.setAge(rs.getInt("age"));
user.setGender(rs.getString("gender"));
userList.add(user);
}
} catch (SQLException e) {
e.printStackTrace();
}
return userList;
}
}
```
5. 在业务逻辑层中调用DAO接口的方法
```java
public class UserService {
private UserDao userDao;
public UserService() throws SQLException {
userDao = new UserDaoImpl();
}
public boolean addUser(User user){
return userDao.addUser(user);
}
public boolean updateUser(User user){
return userDao.updateUser(user);
}
public boolean deleteUser(int id){
return userDao.deleteUser(id);
}
public User getUserById(int id){
return userDao.getUserById(id);
}
public List<User> getAllUsers(){
return userDao.getAllUsers();
}
}
```
以上就是一个简单的Java项目DAO模块的实现步骤和代码示例。需要注意的是,本示例中的数据库连接和关闭方式并不适合于生产环境,仅供参考。在实际项目开发中,应该使用连接池等技术来提高数据库连接的效率和可靠性。
阅读全文