Jdbc学习笔记(五)--Dao模式

目录

(一)什么是DAO模式

1.分层思维

2.分层目的

 (二)对用户tb_user的CURD(增删改查)操作

1.根据表创建对对应的实体类:User

2.编写dao层


(一)什么是DAO模式

DAO(Data Access Object)模式就是写一个类,把访问数据库的代码封装起来。DAO在数据库与业务逻辑(Service)之间。

  1. 实体域,即操作的对象,例如我们操作的表是user表,那么就需要先写一个User类;

  2. DAO模式需要先提供一个DAO接口;

  3. 然后再提供一个DAO接口的实现类

  4. 再编写一个DAO工厂,Service通过工厂来获取DAO实现。

1.分层思维

把同一类的类,放在同一个包下,java分为经典三层模型:

  •  web层:处理请求的类,有框架
  • service层:业务逻辑层(处理业务、逻辑代码、数据加工、条件判断....),没有框架 业务工程师(主要对service层进行构建)
  • dao层:数据访问层,封装与数据库操作,有框架
  • domain/entity/pojo... :实体类(对应数据库的表的类)
  • util:工具类

2.分层目的

  1. 技术隔离:比如dao使用技术:jdbc,jdbc中核心的api类,不能在其他层的类出现
  2. 只能上层调用下层,不能跨层调用

 

 (二)对用户tb_user的CURD(增删改查)操作

1.根据表创建对对应的实体类:User

数据库表的数据类型类属性的属性类型
char/varchar/textString
intInteger
bigIntLong
doubleDouble
decimalBigDecimal
date/time/datetime java.util.Date

取名规范

表的字段名取名规范:accc_bccc

属性名取名规范:小驼峰名   abcAbc

private Integer id;
private String username;
private String password;

public Integer getId() {
    return id;
}

public void setId(Integer id) {
    this.id = id;
}

public String getUsername() {
    return username;
}

public void setUsername(String username) {
    this.username = username;
}

public String getPassword() {
    return password;
}

public void setPassword(String password) {
    this.password = password;
}

@Override
public String toString() {
    return "User{" +
            "id=" + id +
            ", username='" + username + '\'' +
            ", password='" + password + '\'' +
            '}';
}

public User(Integer id, String username, String password) {
    this.id = id;
    this.username = username;
    this.password = password;
}

public User() {
}

2.编写dao层

接口,实现类

User -->  dao层接口:UserDao   -实现类 -->  UserDaoImpl

-->service层接口: UserService/IUserService -实现类 --> UserServiceImpl

--> web层: UserController/ UserServlet

public interface UserDao {
    /**
     * 根据id查询用户
     * @param id
     * @return
     */
    User findById(int id);

    /**
     *  查询所有用户
     * @return
     */
    List<User> findAll();

    /**
     * 添加用户
     * @param user
     * @return 所影响行数
     */
    int save(User user);

    /**
     * 修改用户
     * @param user
     * @return 所影响行数
     */
    int update(User user);

    /**
     * 根据id删除用户
     * @param id
     * @return 所影响行数
     */
    int deleteById(int id);

}

public class UserDaoImpl  implements UserDao {
    @Override
    public User findById(int id) {
        String sql = "select id,username,password from tb_user where id=? ";
        ResultSet resultSet = null;
        try {
            resultSet = JdbcUtil.executeQuery(sql, id);
             User user = null;
             while(resultSet.next()){
                 user = new  User();
                 user.setId(resultSet.getInt("id"));
                 user.setUsername(resultSet.getString("username"));
                 user.setPassword(resultSet.getString("password"));
             }
             return user;
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }finally {
            JdbcUtil.close(resultSet);
        }

    }

    @Override
    public List<User> findAll() {
        String sql = "select id,username,password from tb_user ";
        ResultSet resultSet = null;
        try {
            resultSet = JdbcUtil.executeQuery(sql);
             List<User> users = new ArrayList<>();
            while(resultSet.next()){
                User user  = new  User();
                user.setId(resultSet.getInt("id"));
                user.setUsername(resultSet.getString("username"));
                user.setPassword(resultSet.getString("password"));

                //添加到集合
                users.add(user);
            }
            return users;
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }finally {
            JdbcUtil.close(resultSet);
        }
    }

    @Override
    public int save(User user) {
        String sql = "insert into tb_user(username,password) values(?,?)";
        return JdbcUtil.executeUpdate(sql,user.getUsername(),user.getPassword());
    }

    @Override
    public int update(User user) {
        String sql = "update tn_user  set username = ? , password = ? where id = ? ";
        return JdbcUtil.executeUpdate(sql,user.getUsername(),user.getPassword(),user.getId());

    }

    @Override
    public int deleteById(int id) {
        String sql = "delete from tb_user  where id = ? ";
        return JdbcUtil.executeUpdate(sql,id);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值