JDBC Dao的设计模式框架搭建

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Haitao0823/article/details/70161452

一丶Dao设计模式一些概念

Dao设计模式:
pojo(领域对象层):由普通的Java对象组成;
dao(数据访问层):dao层实现了对数据库的增、删、改、查等原子操作;
业务逻辑层:此层由一系列的业务对象组成,实现了所需要的业务逻辑方法。依赖Dao层实现业务逻辑方法
控制器层:用于拦截用户请求,并调用业务逻辑组件的业务逻辑方法,处理用于请求,并根据处理结果转发到不同的表现层组件
表现层:负责收集 用户请求,并显示处理结果


Dao接口:定义表的“增、删、改、查”方法名
Dao接口的实现类:对应接口的实现类,对应JDBC的实现
Service接口:接口,实现业务逻辑,定义实现系统功能的方法名
Service实现类:对应接口的实现类,调用Dao中的方法,外加某些业务逻辑判断
Model:对应数据库表的实体类(属性与表中的字段对应) 表中的列名 必须 和 类的属性名 保持一致

二丶Dao的应用—实际的框架

这里写图片描述

实体类:(pojo层代码)

package com.iflysse.ceshi.pojo;

public class Users {
    private int id;
    private String name;
    private String account;
    private String psw;
    private int money;

    public Users(){}
    public Users(int id, String name, String account, String psw, int money) {
        super();
        this.id = id;
        this.name = name;
        this.account = account;
        this.psw = psw;
        this.money = money;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAccount() {
        return account;
    }
    public void setAccount(String account) {
        this.account = account;
    }
    public String getPsw() {
        return psw;
    }
    public void setPsw(String psw) {
        this.psw = psw;
    }
    public int getMoney() {
        return money;
    }
    public void setMoney(int money) {
        this.money = money;
    }   
}

Dao层接口代码:

package com.iflysse.ceshi.dao;

import java.util.List;

import com.iflysse.ceshi.pojo.Users;

public interface UsersDao {

    //注册  向数据库添加一条对象
    public void addUsers(Users u);

    //登陆  根据账户和密码  查询一天信息  封装成一个对象
    public Users login(String account,String psw);

    //查询所有 返回一个list集合
    public List<Users> getAllUsers();

}

Dao接口实现类的代码:

package com.iflysee.ceshi.dao.impl;
import jdbc_util.*;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.iflysse.ceshi.dao.UsersDao;
import com.iflysse.ceshi.pojo.Users;

public class UsersDaoImpl implements UsersDao{
    private Connection conn = null;
    private PreparedStatement ps = null;
    private ResultSet rs = null;

    @Override
    public void addUsers(Users u) {
        // TODO Auto-generated method stub
        try {
            String sql = "insert into userinfo values(null,?,?,?,?)";
            conn = JdbcUtil01.getConnection();
            ps = conn.prepareStatement(sql);

            ps.setString(1, u.getName());
            ps.setString(2, u.getAccount());
            ps.setString(3, u.getPsw());
            ps.setInt(4, u.getMoney());

            ps.executeUpdate();

            JdbcUtil01.close(conn, ps, rs);
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    @Override
    public Users login(String account, String psw) {
        // TODO Auto-generated method stub
        Users u = null;
        try {
            String sql = "select * from userinfo where account = ? and psw = ?";
            conn = JdbcUtil01.getConnection();
            ps = conn.prepareStatement(sql);

            ps.setString(1, account);
            ps.setString(2, psw);

            rs = ps.executeQuery();
            //将结果集封装成一个对象
            while(rs.next()){
                u = new Users(rs.getInt(1), rs.getString(2), rs.getString(3), rs.getString(4), rs.getInt(5));
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        JdbcUtil01.close(conn, ps, rs);
        return u;
    }

    @Override
    public List<Users> getAllUsers() {
        // TODO Auto-generated method stub
        List<Users> lst = new ArrayList<Users>();

        try {
            String sql = "select * from userinfo";
            conn = JdbcUtil01.getConnection();
            ps = conn.prepareStatement(sql);

            rs = ps.executeQuery();

            while(rs.next()){
                Users u = new Users(rs.getInt(1), rs.getString(2), rs.getString(3), rs.getString(4), rs.getInt(5));
                lst.add(u);
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        JdbcUtil01.close(conn, ps, rs);
        return lst;
    }

}

Service层接口代码:

package com.iflysse.ceshi.service;

import java.util.List;

import com.iflysse.ceshi.pojo.Users;

public interface UsersService {
    //注册  向数据库添加一条对象
    public void addUsers(Users u);

    //登陆  根据账户和密码  查询一天信息  封装成一个对象
    public Users login(String account,String psw);

    //查询所有 返回一个list集合
    public List<Users> getAllUsers();
}

Service层接口实现类的代码:

package com.iflysse.ceshi.service.impl;

import java.util.List;

import com.iflysee.ceshi.dao.impl.UsersDaoImpl;
import com.iflysse.ceshi.dao.UsersDao;
import com.iflysse.ceshi.pojo.Users;
import com.iflysse.ceshi.service.UsersService;

public class UsersServiceImpl implements UsersService{

    UsersDao ud = new UsersDaoImpl();
    @Override
    public void addUsers(Users u) {
        // TODO Auto-generated method stub
        ud.addUsers(u);
    }

    @Override
    public Users login(String account, String psw) {
        // TODO Auto-generated method stub
        return ud.login(account, psw);
    }

    @Override
    public List<Users> getAllUsers() {
        // TODO Auto-generated method stub
        return ud.getAllUsers();
    }

}

测试类代码:

package com.iflysse.ceshi.test;

import java.util.List;

import com.iflysse.ceshi.pojo.Users;
import com.iflysse.ceshi.service.UsersService;
import com.iflysse.ceshi.service.impl.UsersServiceImpl;

public class TestMain {
    @SuppressWarnings("unused")
    public static void main(String[] args) {
        Users u = new Users(0, "小花", "621", "456", 3);

        UsersService us = new UsersServiceImpl();
        //us.addUsers(u);

        Users u1 =  us.login("6222", "123");
        System.out.println(u1.getName());

        List<Users> lst = us.getAllUsers();
        for(Users ele:lst){
            System.out.println(ele.getName()+" 的账户余额为: "+ele.getMoney());
        }
    }
}   

所应用的数据库为:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/Haitao0823/article/details/70161452