数据访问类的封装

职责分离原则- -每个类职责尽可能的单一。

1.界面,逻辑的分离

2.数据,功能的分离

3.对数据访问来说,对表的操作分离。

例如对数据库wang下面的两个表login和fruit完成增删改查的操作

login表:

fruit表:

建立三个包分别完成表的操作、对数据的访问、界面。

在com.itnba.maya.dal包中将与数据库的连接与操作分离,同时不同表的操作也分离开。

在com.itnba.maya.data包中将对不同表的数据访问分离。

 

在com.itnba.maya.ui中进行界面操作。

 首先建立一个类DBConnection。

package com.itnba.maya.dal;
import java.sql.*;
public class DBConnection {
    private static String drv = "com.mysql.jdbc.Driver";
    private static String url = "jdbc:mysql://127.0.0.1:3306/wang?characterEncoding=GBK";
    private static String uid="root";
    private static String pwd= "";
    public static Connection getConnection() throws Exception
    {
        Class.forName(drv);
        Connection conn = DriverManager.getConnection(url,uid,pwd);
        return conn;
    }

}

对表的访问分别建立fruit和login,其中login:

package com.itnba.maya.data;

public class login {
     private String username;
     private String name;
     private String password;
     private double account;

     public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public double getAccount() {
        return account;
    }
    public void setAccount(double account) {
        this.account = account;
    }

}

 

 

 

分别建立对表的操作FruitDao和LoginDao;其中LoginDao:

package com.itnba.maya.dal;

import java.sql.*;
import java.util.*;

import com.itnba.maya.data.login;

public class LoginDao {
private Connection conn;
                    private PreparedStatement sta;
                    private ResultSet rs;
                    public LoginDao() throws Exception
                    {
                        conn = DBConnection.getConnection();//构造函数,当在界面new一个LoginDao()时,与数据库连接。
                    }
                    public void delete(String key)//删除方法
                    {    
                        try{
                        String sql = "delete from login where key=?";
                        sta = conn.prepareStatement(sql);
                        sta.setString(1, key);
                        sta.executeUpdate();
                        }
                        catch(Exception e)
                        {
                            e.printStackTrace();
                        }
                        finally
                        {
                        try {
                            conn.close();
                        } catch (SQLException e) {
                            e.printStackTrace();
                        }     
                        }
                    }
                    public void insert(String name,String userName,String password ,double account) //输入方法
                    {
                        try{
                        String sql = "insert into login values (?,?,?,?)";
                        sta = conn.prepareStatement(sql);
                        sta.setString(1, userName);
                        sta.setString(2, name);
                        sta.setString(3, password);
                        sta.setDouble(4, account);
                        sta.executeUpdate();
                        }
                        catch(Exception e){
                            e.printStackTrace();
                        }
                        finally{
                        try {
                            conn.close();
                        } catch (SQLException e) {
                            e.printStackTrace();
                        }
                        }
                    }
                    public void insert(login data)//输入方法的重载,当传入是login类型的参数时,通过调用上面的insert()方法完成数据的写入。
                    {
                        insert(data.getUsername(),data.getName(),data.getPassword(),data.getAccount());
                    }
                    public void update(String userName,String name,String password ,double account) 
                    {
                        try{
                    String sql = "update login set name = ?,password = ?,account = ?where username = ?";
                    sta = conn.prepareStatement(sql);
                    sta.setString(1, name);
                    sta.setString(2, password);
                    sta.setDouble(3, account);
                    sta.setString(4, userName);
                    sta.executeUpdate();
                        }
                        catch(Exception e)
                        {
                            e.printStackTrace();
                        }
                        finally{
                    try {
                        conn.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                        }
                    }
                    public void Update(login data){
                        update(data.getUsername(),data.getName(),data.getPassword(),data.getAccount());
                    }
                    public ArrayList<login> select() //对表全部查看时,需要用一个集合接收数据库中表的内容
                    {
                        ArrayList<login> list = new ArrayList<login>();
                        String sql = "select * from login";
                        try{
                            sta = conn.prepareStatement(sql);
                            rs = sta.executeQuery();
                            while(rs.next()) //将表中的数据,存到集合中。   
                            {
                                login data = new login();
                                data.setUsername(rs.getString(1));
                                data.setName(rs.getString(2));
                                data.setPassword(rs.getString(3));
                                data.setAccount(rs.getDouble(4));
                                list.add(data);
                            }
                        }
                        catch(Exception e)
                        
                        {
                            e.printStackTrace();
                        }
                        finally
                        {
                            try {
                                conn.close();
                            } catch (SQLException e) {
                                e.printStackTrace();
                            }
                        }
                        return list;
                    }
                    public login select (String key)//通过主键查一条数据时
                    {
                        login data = null ;
                        try{
                            String sql = "select * from login where username = ?";
                            sta = conn.prepareStatement(sql);
                            sta.setString(1, key);
                            rs = sta.executeQuery();
                            while(rs.next())
                            {
                                data = new login();  
                                data.setUsername(rs.getString(1));
                                data.setName(rs.getString(2));
                                data.setPassword(rs.getString(3));
                                data.setAccount(rs.getDouble(4));
                            }
                        }
                        catch(Exception e)
                        {
                            e.printStackTrace();
                        }
                        finally
                        {
                            try {
                                conn.close();
                            } catch (SQLException e) {
                                e.printStackTrace();
                            }
                        }
                        return data;
                    }

}

 

转载于:https://www.cnblogs.com/ermeng/p/6257405.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
前台: (1)注册登录模块:按照学校的相关规定进行注册和登录。 (2)招聘信息查看:高校毕业生们可以网站首页上查看所有的招聘信息,除此之外还可以输入公司名称或岗位名称进行搜索。 (3)用人单位模块:此模块为宣传用人单位的主要功能模块,具体括用人单位简介、岗位需求及职责及公司介绍等功能。 (4)就业指导:学生朋友们在就业前可以通过此模块获取指导。 (5)新闻信息:为了让用户们可以了解到最新的新闻动态,本系统可以通过新闻信息查看功能阅读近期的新闻动态。 (6)在线论坛:毕业季的同学们可以通过此模块相互交流。 后台: (1)系统用户管理模块:可以查看系统内的管理员信息并进行维护。 (2)学生管理模块:通过此功能可以添加学生用户,还可以对学生信息进行修改和删除。 (3)用人单位管理模块:管理员用户通过此模块可以管理用人单位的信息,还可以对用人单位信息进行查看和维护。 (4)招聘管理模块:管理员通过此功能发布和维护系统内的照片信息。 (5)就业指导管理模块:通过此模块可以编辑和发布就业指导信息,从而更好的帮助就业季的同学们。 (6)论坛管理:通过论坛管理可以查看论坛中的主题帖及里面的回复信息,除此之外还可以对论坛中的信息进行维护和管理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值