DAO(Data Access Object)对数据库访问的接口
DAO由四部分组成:
vo:(对数据库表的映射)
DAO接口:定义各种操作方法
DAO实现类:
DAO工厂:
//定义一个类(相当于数据库中表属性得映射)的属性
Book.java
package org.oracle.vo;
public class Book {
private Integer bookId;
private String bookName;
private Integer price;
public Book(String bookName, Integer price) {
super();
this.bookName = bookName;
this.price = price;
}
public Book() {
super();
}
public Integer getBookId() {
return bookId;
}
public void setBookId(Integer bookId) {
this.bookId = bookId;
}
public String getBookName() {
return bookName;
}
public void setBookName(String bookName) {
this.bookName = bookName;
}
public Integer getPrice() {
return price;
}
public void setPrice(Integer price) {
this.price = price;
}
@Override
public String toString() {
return "Book [bookId=" + bookId + ", bookName=" + bookName + ", price=" + price + "]";
}
}
//定义dao接口 (各种方法)
BookDao.java
package org.oracle.dao;
import java.util.List;
import org.oracle.vo.Book;
public interface BookDao {
public void save(Book book) ;
public void update(Book book);
public void delete(Book book);
public List<Book> getAll();
public Book getBookById(int bookId);
public List<Book> getAllByPage(int pageNumber,int pageSize);
}
//接口实现类
BookDaoImpl.java
package org.oracle.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import org.oracle.vo.Book;
public class BookDaoImpl extends BaseDao implements BookDao {
@Override
public void save(Book book) {
this.executeSql("insert into book values(null,?,?)", book.getBookName(),book.getPrice());
}
@Override
public void update(Book book) {
this.executeSql("update book set bookName=?, price=? where bookId=? ", book.getBookName(),book.getPrice(),book.getBookId());
}
@Override
public void delete(Book book) {
this.executeSql("delete from book where bookId=?", book.getBookId());
}
@Override
public List<Book> getAll() {
List<Book>list =new ArrayList<Book>();
Connection conn=this.getConnection();
Statement st=null;
ResultSet rs=null;
try {
st=conn.createStatement();
rs=st.executeQuery("select bookId,bookName,price from book order by bookId");
//将rs结果集的数据存入list中
while(rs.next()) {
Book book=new Book();
book.setBookId(rs.getInt("bookId"));
book.setBookName(rs.getString("bookName"));
book.setPrice(rs.getInt("price"));
list.add(book);
}
} catch (Exception e) {
e.printStackTrace();
}finally {
this.close(conn);
this.close(st);
this.close(rs);
}
return list;
}
@Override
public Book getBookById(int bookId) {
Connection conn=this.getConnection();
PreparedStatement ps=null;
ResultSet rs=null;
try {
ps=conn.prepareStatement("select bookId,bookName,price from book where bookId=?");
ps.setInt(1, bookId);
rs=ps.executeQuery();
//将rs结果集的数据存入list中
if (rs.next()) {
Book book=new Book();
book.setBookId(rs.getInt("bookId"));
book.setBookName(rs.getString("bookName"));
book.setPrice(rs.getInt("price"));
return book;
}
} catch (Exception e) {
e.printStackTrace();
}finally {
this.close(conn);
this.close(ps);
this.close(rs);
}
return null;
}
@Override
public List<Book> getAllByPage(int pageNumber, int pageSize) {
List<Book>list =new ArrayList<Book>();
Connection conn=this.getConnection();
PreparedStatement ps=null;
ResultSet rs=null;
try {
ps=conn.prepareStatement("select bookId,bookName,price from book order by bookId limit ?,?");
ps.setInt(1,(pageNumber-1)*pageSize);
ps.setInt(2,pageSize);
rs=ps.executeQuery();
//将rs结果集的数据存入list中
while(rs.next()) {
Book book=new Book();
book.setBookId(rs.getInt("bookId"));
book.setBookName(rs.getString("bookName"));
book.setPrice(rs.getInt("price"));
list.add(book);
}
} catch (Exception e) {
e.printStackTrace();
}finally {
this.close(conn);
this.close(ps);
this.close(rs);
}
return list;
}
}
//测试
package org.oracle.dao;
import java.util.List;
import org.oracle.vo.Book;
public class DaoTest {
public static void main(String[] args) {
// Book book=new Book("活着",100);
// book.setBookId(14);
BookDao dao=new BookDaoImpl();
// dao.update(book);//更改书籍
// dao.delete(book); //删除书籍
//全部查询
// List <Book>list=dao.getAll();
// for(Book b:list) {
// System.out.println(b);
// }
//查询单个记录
// System.out.println(dao.getBookById(17));
//查询
List <Book>list=dao.getAllByPage(4, 4);
for(Book b:list) {
System.out.println(b);
}
}
}
注:在这个例子中list的作用是当数据库断开时,可以将查询的数据存储在list中,之后只需要对list进行操作