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("
zs@126.com");
  //通过工厂得到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("
zs@126.com");
  //通过工厂得到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();
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值