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

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;
                    }

}

 

posted on 2017-01-06 18:35  二蒙  阅读(162)  评论(0编辑  收藏  举报