if(params[i]instanceofString){
ps.setString((i+1),(String)params[i]);
}elseif(params[i]instanceofInteger){
ps.setInt((i+1),(Integer)params[i]);
}
}
}catch(SQLExceptione){
e.printStackTrace();
}
returnrs;
}
publicbooleancloseResource(){
if(rs!
=null){
try{
rs.close();
}catch(SQLExceptione){
e.printStackTrace();
returnfalse;
}
}
if(ps!
=null){
try{
ps.close();
}catch(SQLExceptione){
e.printStackTrace();
returnfalse;
}
}
if(conn!
=null){
try{
conn.close();
conn=null;
}catch(SQLExceptione){
e.printStackTrace();
returnfalse;
}
}
returntrue;
}
//方法重载如果需要关闭几个资源就选择哪个方法
publicvoidcloseResource(Connectionconn){
if(conn==null){
try{
conn.close();
}catch(SQLExceptione){
e.printStackTrace();
}
}
}
}
Dao层接口--BookDao.java
packagecombook.dao;
importjava.util.List;
importcombook.dto.Book;
importcommon.dto.PageDto;
publicinterfaceBookDao{
publicListgetBooksList(PageDtopagedto)throwsException;//获得图书集合的方法--所有信息
//增加一本图书信息
publicintinsertBooks(Bookbook)throwsException;
//根据图书编号删除新闻
publicintdelete(intbid)throwsException;
//修改信息--传入的是图书对象
publicintupdate(Bookbook)throwsException;
//根据图书编号查找该图书
//根据图书编号查找该图书
publicBookquery(intbid)throwsException;
publicListquery(Stringbookname)throwsException;
//获得总记录的方法
publicintgetAllRowCount()throwsException;
}
BookImpl.java实现类实现了接口继承了BaseDao.java
packagecombook.dao.impl;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importjava.sql.Statement;
importjava.util.ArrayList;
importjava.util.List;
importcombook.dao.BaseDao;
importcombook.dao.BookDao;
importcombook.dto.Book;
importcommon.dto.PageDto;
publicclassBookImplextendsBaseDaoimplementsBookDao{
//1、查询所有信息返回一个带有泛型的集合
publicListgetNewsList()throwsException{
//定义一个集合集合是对应的要返回出去的泛型集合
ListbookList=newArrayList();
super.getConnection();//获得连接通过父类的方法
conn.prepareStatement("select*fromnews");
rs=ps.executeQuery();//返回结果集
while(rs.next()){//循环结果集中的数据判断结果集中是否还有下一个容
Bookbook=newBook();//创建一个实例对象
//把结果集中的图书信息封装到图书对象中去
book.setBid(rs.getInt("bid"));
book.setBookName(rs.getString("bookName"));
book.setImage(rs.getString("image"));
book.setPrice(Double.parseDouble(rs.getString("b_price")));
book.setStock(rs.getInt("stock"));
//将图书对象添加到集合中去因为集合是带有图书泛型所以不需要强转直接添加图书对象
bookList.add(book);
}
//调用父类方法释放资源
super.closeResource();
returnbookList;
}
//获得数据库中所有的图书信息
publicListgetBooksList(PageDtopagedto)throwsException{
//新建一个带有book泛型的集合
ListbookList=newArrayList();
super.getConnection();//第一步获得与数据库的连接
intstart=pagedto.getStartIndex();//分页查询开始
intend=pagedto.getEndIndex();//分页查询结束
//写分页查询的sql语句
Stringsql="select*from(selectb.*,rownumrnfrombooksb)wherern>=?
andrn
";
ps=conn.prepareStatement(sql);//预编译sql语句
ps.setInt(1,start);//设置第一个参数的值
ps.setInt(2,end);//设置第二个参数的值
//执行查询语句
rs=ps.executeQuery();
//循环结果集的数据
while(rs.next()){
//实例化一个图书的对象
Bookbook=newBook();
//把结果集中的图书信息封装到图书对象中去
book.setBid(rs.getInt("bid"));
book.setBookName(rs.getString("bookName"));
book.setImage(rs.getString("image"));
book.setPrice(Double.parseDouble(rs.getString("b_price")));
book.setStock(rs.getInt("stock"));
//将图书对象添加到集合中去因为集合是带有图书泛型所以不需要强转直接添加图书对象
bookList.add(book);
}
super.closeResource();
returnbookList;
}
//向表中插入新书的方法传入的是图书对象返回影响的行数
publicintinsertBooks(Bookbook)throwsException{
super.getConnection();//第一步获得与数据库的连接
//新建一个参数的数组填充占位符
Objectparams[]=newObject[5];
params[0]=book.getBid();
params[1]=book.getBookName();
params[2]=book.getPrice();
params[3]=book.getImage();
params[4]=book.getStock();
Stringsql="insertintobookvalues(?
?
?
?
?
)";
//预编译sql语句
ps=conn.prepareStatement(sql);
//执行更新数据库的sql语句操作
intcount=super.execute(sql,params);
super.closeResource();
returncount;
}
//删除图书的方法根据穿过来的图书id
publicintdelete(intbid)throwsException{
super.getConnection();//第一步获得与数据库的连接
//填充占位符
Objectparams[]=newObject[1];
params[0]=bid;
Stringsql="deletefrombookwherebid=?
";//删除的sql语句
//预编译sql语句
ps=conn.prepareStatement(sql);
//调用父类的执行sql
intcount=super.execute(sql,params);
//释放资源
super.closeResource();
//返回受影响的行数
returncount;
}
//修改图书的方法传入图书的对象
publicintupdate(Bookbook)throwsException{
super.getConnection();//第一步获得与数据库的连接
//填充占位符
Objectparams[]=newObject[4];
params[0]=book.getBookName();
params[1]=book.getPrice();
params[2]=book.getImage();
params[3]=book.getStock();
Stringsql="updatebooksetbookname=?
b_price=?
image=?
stock=?
";
ps=conn.prepareStatement(sql);
intcount=super.execute(sql,params);
super.closeResource();
returncount;
}
publicBookquery(intbid)throwsException{
super.getConnection();//第一步获得与数据库的连接
Bookbook=newBook();
//填充占位符
Objectparams[]=newObject[1];
params[0]=bid;
Stringsql="select*frombookswherebid=?
";
conn.prepareStatement(sql);
rs=super.excuteSql(sql,params);
if(rs.next()){
//把结果集中的图书信息封装到图书对象中去
book.setBid(rs.getInt("bid"));
book.setBookName(rs.getString("bookName"));
book.setImage(rs.getString("image"));
book.setPrice(rs.getDouble("b_price"));
book.setStock(rs.getInt("stock"));
}
super.closeResource();
returnbook;
}
publicListquery(Stringbookname)throwsException{
super.getConnection();//第一步获得与数据库的连接
//新建一个带有book泛型的集合
ListbookList=newArrayList();
//填充占位符
//Objectparams[]=newObject[1];
//params[0]=bookname;
Stringsql="select*frombookswherebooknamelike?
";
ps=conn.prepareStatement(sql);
ps.setString(1,"%"+bookname+"%");
//rs=super.excuteSql(sql,params);
rs=ps.executeQuery();
while(rs.next()){
Bookbook=newBook();
//把结果集中的图书信息封装到图书对象中去
book.setBid(rs.getInt("bid"));
book.setBookName(rs.getString("bookName"));
book.setImage(rs.getString("image"));
book.setPrice(rs.getDouble("b_price"));
book.setStock(rs.getInt("stock"));
bookList.add(book);
}
super.closeResource();
returnbookList;
}
publicintgetAllRowCount()throwsException{
super.getConnection();//获得连接
intcount=0;
//查找到所有记录
Stringsql="selectcount(*)frombooks";
ps=conn.prepareStatement(sql);//预编译sql语句
rs=ps.executeQuery();//返回一个结果集
if(rs.next()){
count=rs.getInt
(1);//获得结果集的第一条
}
super.closeResource();
returncount;
}
}
用户表UserInfoDao.java接口
packagecombook.dao;
importjava.util.List;
importcombook.dto.Book;
importcombook.dto.UserInfo;
importcommon.dto.PageDto;
publicinterfaceUserInfoDao{
//传入一个用户的对象判断这个对象是否在数据库中存在
publicintqueryObject(UserInfouser)throwsException;
//根据用户名查找该数据库表中有没有重复的用用户
publicintquery(StringuserName)throwsException;
//增加一个用户信息--传入一个用户对象
publicintinsertUserInfo(UserInfouser)throwsException;
//修改信息--传入的是用户对象
publicintupdate(UserInfouser)throwsException;
}
UserInfoDaoImpl实现类
packagecombook.dao.impl;
importjava.sql.SQLException;
importjava.util.List;
importcombook.dao.BaseDao;
importcombook.dao.UserInfoDao;
importcombook.dto.Book;
importcombook.dto.UserInfo;
importcommon.dto.PageDto;
publicclassUserInfoDaoImplextendsBaseDaoimplementsUserInfoD