javaEE-体系结构

**

javaEE-体系结构

**

在实际开发中,java编程语言设计程序会使用javaEE三层架构这种方式。

三层架构:表示层(web层)、业务逻辑层(service)、数据访问层(date access object)。

三层架构图
**

Dao模式

DAO(Data Access Object)是javaEE三层中持久层的设计模式。是一个数据访问接口,数据访问:顾名思义就是与数据库打交道。夹在业务逻辑与数据库资源中间。
DAO模式解决的问题: 在持久层将数据源以及数据源的操作封装起来。并提供通过对象操作数据源接口,提供给业务层使用。

  1. 数据源(数据库)
  2. Business Object 业务层代码,调用DAO,完成对数据源的操作
  3. Date Access Object 数据访问对象,持久层DAO程序,封装对数据源CRUD,提供方法参数都是java对象。
  4. TransferObject 传输对象,业务层通过向数据层传递TO对象,完成数据源的CRUD。

注意:DAO设计模式是javaEE持久层的设计模式,跟通用的设计模式是不同的,比如说通用的设计模式有:单例模式,装饰者模式,迭代器模式,适配器模式等待,是用来解决软件中常见的问题。
DAO(Data Access Object)模式就是写一个类,把访问数据库的代码封装起来。DAO在数据库与业务逻辑(Service)之间。

  • 实体域,即操作的对象,例如我们操作的表是user表,那么就需要先写一个User类;
  • DAO模式需要先提供一个DAO接口;
  • 然后再提供一个DAO接口的实现类;
  • 再编写一个DAO工厂,Service通过工厂来获取DAO实现。DAO模式,进行三层结构搭建,java工程添加如下级别的包:src
    1、JavaBean:User.java
import java.sql.Date;
//实体类
public class User_ {
    private Integer id;  //私有属性对应表格字段 类型以包装类Integer对应int 名称设置相同
    private String name;    
    private Integer age;
    private String adress;
    private Date birthday;

    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    public String getAdress() {
        return adress;
    }
    public void setAdress(String adress) {
        this.adress = adress;
    }
    public Date getBirthday() {
        return birthday;
    }
    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }
    public User_() {        //无参构造方法,创建对象
    }
    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", adress='" + adress + '\'' +
                ", birthday=" + birthday +
                '}';
    }
}

2、UserDao

public interface UserDao {
    //增加
    public void addUser(User_ user) throws SQLException;
    //修改
    public void updateUser(User_ User) throws SQLException;
    //删除
    public void deleteUserByid(Integer id) throws SQLException;
    //查询
    public List<User_> queryUserAll() throws SQLException;
    //查询一条数据
    public User_ queryUserbyid(Integer id) throws SQLException;
}

3、UserDaoImpl

public class UserDaoImpl implements UserDao {
    //获取配置文件设置
    /获取C3p0程序池连接
    private  QueryRunner queryRunner=new QueryRunner(new DriverManagerDataSource());
    @Override
    //实现添加数据
    public void addUser(User_ user) throws SQLException {
        //new DriverManagerDataSource()  创建C3P0 配置文件数据
        //通过C3P0 连接池 获取连接池对象连接

        String sql="  insert into user (name,age,adress,birthday) values (?,?,?,?) ";
        //执行update方法
        queryRunner.update(sql,user.getName(),user.getAge(),user.getAdress(),user.getBirthday());
//        PreparedStatement pst = conn.prepareStatement(sql);

    }

    //实现更新数据
    @Override
    public void updateUser(User_ user) throws SQLException {
        //创建C3p0连接池
        //创建工具类对象
        QueryRunner queryruner=new QueryRunner(new DriverManagerDataSource());
        String sql="  update user set name=?,age=?,adress=?,birthday=? where id=? ";
        queryruner.update(sql,user.getName(),user.getAge(),user.getAdress(),user.getBirthday(),user.getId());
    }

    //实现修改数据
    @Override
    public void deleteUserByid(Integer id) throws SQLException {
        String sql="  delete from user where id=? ";
        queryRunner.update(sql,id);
    }

    //实现查询全部数据
    @Override
    public List<User_> queryUserAll() throws SQLException {
        List<User_> listuser= new ArrayList<User_>();
        String sql=" select * from user ";
         listuser = queryRunner.query(sql, new BeanListHandler<User_>(User_.class));
         return listuser;
    }

    //查询一行数据
    @Override
    public User_ queryUserbyid(Integer id) throws SQLException {
        List<User_> listuser= new ArrayList<>();
        String sql="select*from user where id=?";
        User_ query = queryRunner.query(sql, new BeanHandler<User_>(User_.class), id);
         if(query==null)return null;
        return query;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值