MvcExample——UserDao,UserDaoImpl

本文深入探讨了UserDao接口及其实现类UserDaoImpl的功能与使用方法,包括用户数据的增删改查操作,以及事务支持的实现细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

UserDao–基本操作的实现接口

package com.foot.mvcpro.dao;

import java.sql.Connection;
import java.util.List;

import com.foot.mvcpro.model.User;

/**
 * 接口制定规则,只定义方法但是不去实现,定义与User有关系的操作方法
 * @author footprint
 *
 */
public interface UserDao {
    /**
     * 实现插入一条用户数据
     * @param user
     * @return
     */
    public int save(User user);
    /**
     * 根据用户ID删除用户数据
     * @param id
     * @return
     */
    public int deleteUserById(int id);
    /**
     * 根据用户ID修改用户数据
     * @param id
     * @return
     */
    public int updateUserbyId(User user);
    /**
     * 根据用户的ID,返回一个用户对象,不支持事务
     * @return
     */
    public User getUserById(int id);
    /**
     * 根据用户的ID,返回一个用户对象,支持事务
     * @return
     */
    public User getUserById(Connection conn, int id);
    /**
     * 返回所有的用户对象
     * @return
     */
    public List<User> getUserAll();
    /**
     * 查询指定用户名的用户有多少条
     * @param name
     * @return Object 转换 数字需要用 long 来接收
     */
    public long getCountByName(String name);
}

该类中必须对每个方法写上注释

UserDao的实现UserDaoImpl

package com.foot.mvcpro.dao;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;

import com.foot.mvcpro.model.User;
import com.foot.mvcpro.utils.JdbcUtils;

public class UserDaoImpl extends BaseDao<User> implements UserDao {

    @Override
    public int save(User user) {
        String sql = "INSERT INTO `user`(`username`,`password`,`phone`,`address`,`regdate`) VALUES (?,?,?,?,?);";
        return super.update(sql, user.getUsername(), user.getPassword(), user.getPhone(), user.getRegDate());
    }

    @Override
    public int deleteUserById(int id) {
        String sql = "DELETE FROM `user` WHERE id = ?;";
        return super.update(sql, id);
    }

    @Override
    public User getUserById(int id) {
        String sql = "SELECT `id`, `username`, `password`, `phone`, `address`, `regdate` regDate "
                + "FROM `user` WHERE id = ?;";
        return super.get(sql, id);
    }

    @Override
    public User getUserById(Connection conn, int id) {
        User user = null;
        String sql = "SELECT `id`, `username`, `password`, `phone`, `address`, `regdate` regDate "
                + "FROM `user` WHERE id = ?;";
        try {
            conn.setAutoCommit(false);
            user = super.get(conn, sql, id);
            conn.commit();
        } catch (Exception e) {
            e.printStackTrace();
            try {
                conn.rollback();
            } catch (SQLException e1) {
                e1.printStackTrace();
            }
        } finally {
            JdbcUtils.closeConn(conn);
        }
        return user;
    }

    @Override
    public int updateUserbyId(User user) {
        String sql = "UPDATE `user` SET `username` = ?, `password` = ?, `phone` = ?, `address` = ? WHERE id = ?;";
        return super.update(sql, user.getUsername(), user.getPassword(), user.getPhone(), user.getAddress(),
                user.getId());
    }

    @Override
    public List<User> getUserAll() {
        // 注意查询的时候,变量名字一定要和JAVA里面对象的名字保持一致,如果不一致,需要用别名
        String sql = "SELECT `id`,`username`,`password`,`phone`,`address`,`regdate`regDate FROM `user`;";
        return super.getlist(sql);
    }

    @Override
    public long getCountByName(String name) {
        String sql = "SELECT COUNT(`id`) FROM `user` WHERE `username` = ?;";
        return (long) super.getValue(sql, name);
    }

}

注意

由于BaseDao的存在,UserDaoImpl的实现显得相当的简单。

转自

腾讯课堂 钟洪发 Java技术之JavaWeb入门 课程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值