实训6.20:完成UserDaoImpl的编写及完成测试

这篇博客详细介绍了如何完成UserDaoImpl的编写,并在net.hw.student.test包中创建了测试类TestUserDaoImpl进行测试。文章展示了测试代码及多次运行结果,同时也提及了在编码过程中遇到的错误。
摘要由CSDN通过智能技术生成

用户数据访问接口实现类UserDaoImpl
代码如下:

package net.lcn.student.bean.dao.impl;

import net.lcn.student.bean.bean.User;
import net.lcn.student.bean.dao.UserDao;
import net.lcn.student.bean.dbutil.ConnectionManager;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;

/**
 * 功能:用户数据访问接口实现类
 * 2019.6.19
 */
public class UserDaoImpl implements UserDao {
    /**
     * 插入用户记录
     *
     * @param user
     * @return 插入记录数
     */
    @Override
    public int insert(User user) {
        //定义插入记录数
        int count =0;

        //1.获得数据连接
        Connection conn = ConnectionManager.getConnection();
        //2.定义SQL字符串
        String strSQL = "insert into t_user (username, password, telephone, register_time) "
                + " values(?,?,?,?)";
        try {
            //3.创建预备语句对象
            PreparedStatement pstmt = conn.prepareStatement(strSQL);
            //4.设置占位符
            pstmt.setString(1,user.getUsername());
            pstmt.setString(2,user.getPassword());
            pstmt.setString(3,user.getTelephone());
            pstmt.setTimestamp(4,new Timestamp(user.getRegisterTime().getTime()));
            //5.执行SQL,返回插入记录数
            count = pstmt.executeUpdate();
            //6.关闭预备语句对象
            pstmt.close();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            //关闭数据库连接
            ConnectionManager.closeConnection(conn);
        }

        //返回插入记录数
        return count;
    }

    /**
     * 按id删除用户记录
     *
     * @param id
     * @return
     */
    @Override
    public int deleteById(int id) {
        //定义删除记录数
        int count = 0;

        //1.获取数据库连接
        Connection conn = ConnectionManager.getConnection();
        //定义SQL字符串
        String strSQL = "delete from t_user where id = ?";
        try {
     
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
IUserDao接口和UserDaoImpl实现类,验证用户类的操作是否正确实现。以下为示例代码: User.java: ```java public class User { private String username; private String password; private String confirmPassword; private Date birthday; // 省略getter、setter方法 } ``` IUserDao接口: ```java public interface IUserDao { boolean addUser(User user); // 添加用户(注册功能) User findUser(String username, String password); // 查找用户(登录功能) boolean updateUser(String username, String password); // 修改用户(重置密码) } ``` UserDaoImpl实现类: ```java public class UserDaoImpl implements IUserDao { private List<User> userList = new ArrayList<>(); // 模拟用户数据 @Override public boolean addUser(User user) { // 判断用户名是否已存在 for (User u : userList) { if (u.getUsername().equals(user.getUsername())) { return false; } } // 添加用户 userList.add(user); return true; } @Override public User findUser(String username, String password) { // 查找用户 for (User u : userList) { if (u.getUsername().equals(username) && u.getPassword().equals(password)) { return u; } } return null; } @Override public boolean updateUser(String username, String password) { // 修改用户密码 for (User u : userList) { if (u.getUsername().equals(username)) { u.setPassword(password); return true; } } return false; } } ``` TestUser测试类: ```java public class TestUser { private IUserDao userDao = new UserDaoImpl(); // 实例化UserDaoImpl @Test public void testAddUser() { User user = new User(); user.setUsername("test"); user.setPassword("123456"); user.setConfirmPassword("123456"); user.setBirthday(new Date()); boolean result = userDao.addUser(user); Assert.assertTrue(result); // 断言添加用户成功 } @Test public void testFindUser() { User user = userDao.findUser("test", "123456"); Assert.assertNotNull(user); // 断言查找用户成功 } @Test public void testUpdateUser() { boolean result = userDao.updateUser("test", "654321"); Assert.assertTrue(result); // 断言修改用户密码成功 User user = userDao.findUser("test", "654321"); Assert.assertNotNull(user); // 断言查找用户成功 } } ``` 以上为用户类的操作实现,采用接口的思想可以使代码更加灵活、扩展性更好。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值