您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 图书管理系统增删查改jspservlet基础项目BaseDao
这是图书管理系统的课后作业增删查改BaseDaojsp提交到servletBaseDao.java数据库操作通用类packagecombook.dao;importjava.sql.*;importcom.dao.util.ConfigManager;importcommon.*;publicclassBaseDao{//数据库操作通用类protectedConnectionconn;/**定义静态变量接收加载驱动*/privatestaticStringdriver;/**定义静态变量得到连接*/privatestaticStringurl;privatestaticStringuserName;//数据库用户名privatestaticStringpassword;//数据库密码//静态的Connection对象static{driver=ConfigManager.getInstance().getString(driver);url=ConfigManager.getInstance().getString(url);userName=ConfigManager.getInstance().getString(userName);password=ConfigManager.getInstance().getString(password);}protectedResultSetrs;protectedStatementstmt;protectedPreparedStatementps;//获取链接的方法publicbooleangetConnection(){if(conn!=null){//判断连接对象是否为空returnfalse;}try{Class.forName(driver);//加载驱动//根据url,用户名和密码获取链接获取的是connection对象conn=DriverManager.getConnection(url,userName,password);}catch(ClassNotFoundExceptione){e.printStackTrace();}catch(SQLExceptione){e.printStackTrace();}returntrue;}//增删改的方法子类可以调用这个方法帮助执行sql语句publicintexecute(Stringsql,Object[]params){try{ps=conn.prepareStatement(sql);//预编译传过来的sql语句if(params!=null){//如果子类传过来的参数不为空的话遍历循环判断使参数兼容for(inti=0;iparams.length;i++){//遍历参数数组Objectobj=params[i];//参数是Object类型的所以Object先接收然后判断if(objinstanceofString){ps.setString((i+1),(String)obj);//如果该参数是String类型的就强转设置数组的的该位置元素是String类型}elseif(objinstanceofInteger){ps.setInt((i+1),(Integer)obj);}elseif(obj==null){//这样判断一下因为有图片传入判断不了类型obj=;//赋值为空ps.setString((i+1),(String)obj);//默认设置为String类型}}}//执行sqlintcount=ps.executeUpdate();returncount;}catch(SQLExceptione){e.printStackTrace();return0;}}//获取结果集的方法publicResultSetexcuteSql(Stringsql,Object[]params){try{rs=ps.executeQuery(sql);for(inti=0;iparams.length;i++){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.javapackagecombook.dao;importjava.util.List;importcombook.dto.Book;importcommon.dto.PageDto;publicinterfaceBookDao{publicListBookgetBooksList(PageDtopagedto)throwsException;//获得图书集合的方法--所有信息//增加一本图书信息publicintinsertBooks(Bookbook)throwsException;//根据图书编号删除新闻publicintdelete(intbid)throwsException;//修改信息--传入的是图书对象publicintupdate(Bookbook)throwsException;//根据图书编号查找该图书//根据图书编号查找该图书publicBookquery(intbid)throwsException;publicListBookquery(Stringbookname)throwsException;//获得总记录的方法publicintgetAllRowCount()throwsException;}BookImpl.java实现类实现了接口继承了BaseDao.javapackagecombook.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、查询所有信息返回一个带有泛型的集合publicListBookgetNewsList()throwsException{//定义一个集合集合是对应的要返回出去的泛型集合ListBookbookList=newArrayListBook();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;}//获得数据库中所有的图书信息publicListBookgetBooksList(PageDtopagedto)throwsException{//新建一个带有book泛型的集合ListBookbookList=newArrayListBook();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(?,?,?,?,?);/
本文标题:图书管理系统增删查改jspservlet基础项目BaseDao
链接地址:https://www.777doc.com/doc-770089 .html