DAO程序設計

DAO屬於J2EE數據層的操作,即DAO封裝了數據庫表在一個項目中的所有操作(增刪查改)

代碼如下:

一://寫實體類Person
public class Person {

private String id ;
 private String name ;
 private String password ;
 private int age ;
 private String email ;
 public String getId() {
  return id;
 }
 public void setId(String id) {
  this.id = id;
 }
 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 int getAge() {
  return age;
 }
 public void setAge(int age) {
  this.age = age;
 }
 public String getEmail() {
  return email;
 }
 public void setEmail(String email) {
  this.email = email;
 }

}
二.//定義有關Person表的有關操作的抽象方法
public interface PersonDAO {

   // 增加操作
    public void insert(Person person) throws Exception;
    // 修改操作

    public void update(Person person) throws Exception;
    // 刪除操作

    public void delete(String id) throws Exception;
    // 按ID查詢操作

    public Person queryById(String id) throws Exception;
    // 查詢全部

    public List queryAll() throws Exception;
    // 模糊查詢

    public List queryByLike(String cond) throws Exception;
}

三 //定義類實現personDAO

public class PersonDAOImpl implements PersonDAO {

    public void insert(Person person) throws Exception {
        String sql = "insert into person (id,name,password,age,email) values(?,?,?,?,?)";
        PreparedStatement pstmt = null;
        DataBaseConnection dbc = null;
        try {
            dbc = new DataBaseConnection();
            pstmt = dbc.getConnection().prepareStatement(sql);
            pstmt.setString(1, person.getId());
            pstmt.setString(2, person.getName());
            pstmt.setString(3, person.getPassword());
            pstmt.setInt(4, person.getAge());
            pstmt.setString(5, person.getEmail());
            pstmt.executeUpdate();
            pstmt.close();
        } catch (Exception e) {
            throw new Exception("操作出現異常");
        } finally {
            dbc.close();
        }
    }

    // 修改操作
    public void update(Person person) throws Exception {
        String sql = "UPDATE person SET name=?,password=?,age=?,email=? WHERE id=?";
        PreparedStatement pstmt = null;
        DataBaseConnection dbc = null;
        try {
            dbc = new DataBaseConnection();
            pstmt = dbc.getConnection().prepareStatement(sql);
            pstmt.setString(1, person.getName());
            pstmt.setString(2, person.getPassword());
            pstmt.setInt(3, person.getAge());
            pstmt.setString(4, person.getEmail());
            pstmt.setString(5, person.getId());
            pstmt.executeUpdate();
            pstmt.close();
        } catch (Exception e) {
            throw new Exception("操作出現異常");
        } finally {
            dbc.close();
        }
    }

    // 刪除操作
    public void delete(String id) throws Exception {
        String sql = "DELETE FROM person WHERE id=?";
        PreparedStatement pstmt = null;
        DataBaseConnection dbc = null;
        try {
            dbc = new DataBaseConnection();
            pstmt = dbc.getConnection().prepareStatement(sql);
            pstmt.setString(1, id);
            pstmt.executeUpdate();
            pstmt.close();
        } catch (Exception e) {
            throw new Exception("操作出現異常");
        } finally {
            dbc.close();
        }
    }

    // 按ID查詢操作
    public Person queryById(String id) throws Exception {
        Person person = null;
        String sql = "SELECT id,name,password,age,email FROM person WHERE id=?";
        PreparedStatement pstmt = null;
        DataBaseConnection dbc = null;
        try {
            dbc = new DataBaseConnection();
            pstmt = dbc.getConnection().prepareStatement(sql);
            pstmt.setString(1, id);
            ResultSet rs = pstmt.executeQuery();
            if (rs.next()) {
                person = new Person();
                person.setId(rs.getString(1));
                person.setName(rs.getString(2));
                person.setPassword(rs.getString(3));
                person.setAge(rs.getInt(4));
                person.setEmail(rs.getString(5));
            }
            rs.close();
            pstmt.close();
        } catch (Exception e) {
            throw new Exception("操作出現異常");
        } finally {
            dbc.close();
        }
        return person;
    }

    // 查詢全部
    public List queryAll() throws Exception {
        List all = new ArrayList();
        String sql = "SELECT id,name,password,age,email FROM person";
        PreparedStatement pstmt = null;
        DataBaseConnection dbc = null;
        try {
            dbc = new DataBaseConnection();
            pstmt = dbc.getConnection().prepareStatement(sql);
            ResultSet rs = pstmt.executeQuery();
            while (rs.next()) {
                Person person = new Person();
                person.setId(rs.getString(1));
                person.setName(rs.getString(2));
                person.setPassword(rs.getString(3));
                person.setAge(rs.getInt(4));
                person.setEmail(rs.getString(5));
                all.add(person);
            }
            rs.close();
            pstmt.close();
        } catch (Exception e) {
            throw new Exception("操作出現異常");
        } finally {
            dbc.close();
        }
        return all;
    }

    // 模糊查詢
    public List queryByLike(String cond) throws Exception {
        List all = new ArrayList();
        String sql = "SELECT id,name,password,age,email FROM person " +
                "WHERE name LIKE ? or email LIKE ?";
        PreparedStatement pstmt = null;
        DataBaseConnection dbc = null;
        try {
            dbc = new DataBaseConnection();
            pstmt = dbc.getConnection().prepareStatement(sql);
            pstmt.setString(1, "%" + cond + "%");
            pstmt.setString(2, "%" + cond + "%");
            ResultSet rs = pstmt.executeQuery();
            while (rs.next()) {
                Person person = new Person();
                person.setId(rs.getString(1));
                person.setName(rs.getString(2));
                person.setPassword(rs.getString(3));
                person.setAge(rs.getInt(4));
                person.setEmail(rs.getString(5));
                all.add(person);
            }
            rs.close();
            pstmt.close();
        } catch (Exception e) {
            throw new Exception("操作出現異常");
        } finally {
            dbc.close();
        }
        return all;
    }
}
四//  定義一個類DAOFactory  (數據庫工廠)

public class DAOFactory {

    public static PersonDAO getPersonDAOInstance() {
        return new PersonDAOImpl();
    }
}
五 //數據庫連接類

//好處:方便管理數據庫連接
public class DataBaseConnection {

    private final String DBDRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";//裝載並註冊數據庫的JDBC驅動程序
    private final String DBURL = "jdbc:sqlserver://pgm:1433;DatabaseName=pgm";//建立與數據庫的連接
    private final String DBUSER = "sa";//用戶名
    private final String DBPASSWORD = "";//密碼
    private Connection conn = null;

    public DataBaseConnection() {
        try {
            Class.forName(DBDRIVER);
            this.conn = DriverManager.getConnection(DBURL, DBUSER, DBPASSWORD);
        } catch (Exception e) {
        }
    }
    // 取得數據庫連接

    public Connection getConnection() {
        return this.conn;
    }
    // 關閉數據庫連接

    public void close() {
        try {
            this.conn.close();
        } catch (Exception e) {
        }
    }
}

六:測試類!!!!

1 插入

public class TestInsert {

public static void main(String args[ ])
 {
  new TestInsert();
 }
 public TestInsert()
 {
  Person person=new Person(); //實例化數據bean
  person.setId("Zs");
  person.setName("張三");
  person.setPassword("zzzzzz");
  person.setAge(30);
  person.setEmail("
[email protected]");
  //通過工廠得到personDAO對象
  PersonDAO dao=DAOFactory.getPersonDAOInstance();
  try
  {
   dao.insert(person);  //插入操作,把數據bean傳入
   System.out.println("插入成功");
  }catch(Exception e){
   System.out.println("插入失敗");
   e.printStackTrace();
  }
 }

}
2 更新

public class TestUpdate {
public static void main(String args[ ])
 {
  new TestUpdate();
 }
 public TestUpdate()
 {
  Person person=new Person(); //實例化數據bean
  person.setId("ZS");
  person.setName("張三");
  person.setPassword("yyyyyy");
  person.setAge(30);
  person.setEmail("
[email protected]");
  //通過工廠得到personDAO對象
  PersonDAO dao=DAOFactory.getPersonDAOInstance();
  try
  {
   dao.update(person);  //更新操作,把數據bean傳入
   System.out.println("更新成功");
  }catch(Exception e){
   System.out.println("更新失敗");
   e.printStackTrace();
  }
 }

}

3 按ID查找

public class TestIdSelect {
public static void main(String[] args) {
  new TestIdSelect();
 }
 public TestIdSelect() {
  PersonDAO dao=DAOFactory.getPersonDAOInstance();
  try{
   Person person=dao.queryById("ZS");
   System.out.println(person.getName());
   System.out.println(person.getPassword());
   System.out.println(person.getAge());
   System.out.println(person.getEmail());
  }catch(Exception e){
   System.out.println("查詢失敗");
   e.printStackTrace();
  }
 }
}
4  查找全部信息

public class TestAllSelect {

    public static void main(String[] args) {
        new TestAllSelect();
    }

    public TestAllSelect() {
        PersonDAO dao = DAOFactory.getPersonDAOInstance();
        try {
            List list = dao.queryAll();
            Iterator iter = list.iterator();
            while (iter.hasNext()) {
                Person person = (Person) iter.next();
                System.out.print(person.getId() + " ");
                System.out.print(person.getName() + " ");
                System.out.print(person.getPassword() + " ");
                System.out.print(person.getAge() + " ");
                System.out.print(person.getEmail() + " ");
                System.out.println();
            }
        } catch (Exception e) {
            System.out.println("查詢失敗");
            e.printStackTrace();
        }
    }
}

發佈了27 篇原創文章 · 獲贊 0 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章