MySQL中的DAO编程(c mysql dao)

MySQL中的DAO编程

DAO是Data Access Object的缩写,是一种设计模式,用于将业务逻辑与数据访问逻辑分离,提高代码的可维护性和可测试性。在MySQL数据库中,DAO编程可以将数据存储和检索操作封装到一个独立的类中,使得代码更加清晰简洁。

1. 创建DAO类

我们可以创建一个DAO类,用于定义所有数据存储和检索操作的接口。以下是一个简单的例子:

public interface UserDao {
public User getUserById(int id);
public List getAllUsers();
public void addUser(User user);
public void updateUser(User user);
public void deleteUser(int id);
}

在上面的代码中,我们定义了以下接口方法:

– getUserById():按照给定的ID返回一个用户;

– getAllUsers():返回所有用户的列表;

– addUser():添加一个新用户;

– updateUser():更新一个现有用户;

– deleteUser():删除一个用户。

2. 实现DAO类

现在我们需要创建一个实现UserDao接口的DAO类。以下是一个MySQL UserDao实现的例子。

首先我们需要在MySQL中创建一个用户表:

CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
`eml` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

然后我们创建MySQLUserDao类:

public class MySQLUserDao implements UserDao {
// MySQL连接相关变量
private String driver = "com.mysql.jdbc.Driver";
private String url = "jdbc:mysql://localhost:3306/test"; // 数据库名
private String username = "root"; // 数据库用户名
private String password = "root"; // 数据库密码

// 实现UserDao中的方法
public User getUserById(int id) {
// 获取数据库连接
Connection conn = getConnection();
PreparedStatement ps = null;
ResultSet rs = null;
User user = null;
try {
// 调用存储过程
ps = conn.prepareStatement("CALL get_user_by_id(?)");
ps.setInt(1, id);
rs = ps.executeQuery();
while (rs.next()) {
user = new User();
user.setId(rs.getInt("id"));
user.setName(rs.getString("name"));
user.setEml(rs.getString("eml"));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 释放资源
closeConnection(conn, ps, rs);
}
return user;
}
// 其他方法的实现
// ...
// 获取数据库连接
private Connection getConnection() throws SQLException {
Connection conn = null;
try {
Class.forName(driver);
conn = DriverManager.getConnection(url, username, password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return conn;
}

// 释放数据库连接等资源
private void closeConnection(Connection conn, PreparedStatement ps, ResultSet rs) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (ps != null) {
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}

在上面的代码中,我们实现了UserDao接口中的getUserById()方法,该方法通过调用MySQL存储过程来检索用户。我们还实现了一个私有的getConnection()方法来获取数据库连接,并实现一个私有的closeConnection()方法来释放数据库连接等资源。

3. 测试DAO类

现在我们已经实现了一个DAO类,我们可以使用它来存储和检索用户数据。以下是一个简单的测试MySQLUserDao类的例子。

public static void mn(String[] args) {
UserDao userDao = new MySQLUserDao(); // 创建MySQLUserDao实例
User user = userDao.getUserById(1); // 获取一个用户
System.out.println(user.toString()); // 打印用户信息
}

在上面的代码中,我们创建了一个MySQLUserDao实例并使用它来获取ID为1的用户,并打印其信息。


数据运维技术 » MySQL中的DAO编程(c mysql dao)