1、图书管理系统增删查改jspservlet基础项目BaseDao这是图书管理系统的课后作业 增删查改 BaseDao jsp提交到servletBaseDao.java 数据库操作通用类package combook.dao;import java.sql.*;import .dao.util.ConfigManager;import common.*;public class BaseDao /数据库操作通用类 protected Connection conn; /*定义静态变量接收加载驱动*/ private static String driver; /*定义静态变量得到连接*/ pri
2、vate static String url; private static String userName;/数据库用户名 private static String password;/数据库密码 /静态的Connection 对象 static driver=ConfigManager.getInstance().getString(driver); url=ConfigManager.getInstance().getString(url); userName=ConfigManager.getInstance().getString(userName); password=Confi
3、gManager.getInstance().getString(password); protected ResultSet rs; protected Statement stmt; protected PreparedStatement ps; /获取的方法 public boolean getConnection() if(conn!=null)/判断连接对象是否为空 return false; try Class.forName(driver);/加载驱动 /根据url,用户名和密码获取 获取的是connection对象 conn=DriverManager.getConnectio
4、n(url,userName,password); catch (ClassNotFoundException e) e.printStackTrace(); catch (SQLException e) e.printStackTrace(); return true; /增删改的方法 子类可以调用这个方法 帮助执行sql语句 public int execute(String sql,Objectparams) try ps=conn.prepareStatement(sql);/预编译传过来的sql语句 if(params!=null)/如果子类传过来的参数不为空的话 遍历循环 判断使参
5、数兼容 for (int i = 0; i params.length; i+) /遍历参数数组 Object obj=paramsi;/参数是Object类型的所以Object先接收 然后判断 if(obj instanceof String) ps.setString(i+1), (String)obj);/如果该参数是String类型的 就强转设置 数组的的该位置元素是String类型 else if(obj instanceof Integer) ps.setInt(i+1), (Integer)obj); else if(obj=null)/这样判断一下因为有图片传入 判断不了类型
6、obj=;/赋值为空 ps.setString(i+1), (String)obj);/默认设置为String类型 /执行sql int count=ps.executeUpdate(); return count; catch (SQLException e) e.printStackTrace(); return 0; /获取结果集的方法 public ResultSet excuteSql(String sql,Objectparams) try rs=ps.executeQuery(sql); for (int i = 0; i params.length; i+) if(params
7、i instanceof String) ps.setString(i+1), (String)paramsi); else if(paramsi instanceof Integer) ps.setInt(i+1), (Integer)paramsi); catch (SQLException e) e.printStackTrace(); return rs; public boolean closeResource() if(rs!=null) try rs.close(); catch (SQLException e) e.printStackTrace(); return false
8、; if(ps!=null) try ps.close(); catch (SQLException e) e.printStackTrace(); return false; if(conn!=null) try conn.close(); conn=null; catch (SQLException e) e.printStackTrace(); return false; return true; /方法重载 如果需要关闭几个资源就选择哪个方法 public void closeResource(Connection conn) if(conn=null) try conn.close(
9、); catch (SQLException e) e.printStackTrace(); Dao层接口 -BookDao.javapackage combook.dao;import java.util.List;import combook.dto.Book;import common.dto.PageDto;public interface BookDao public List getBooksList(PageDto pagedto)throws Exception;/获得图书集合的方法-所有信息 /增加一本图书信息 public int insertBooks(Book book
10、)throws Exception; /根据图书编号删除新闻 public int delete(int bid)throws Exception; /修改信息 -传入的是图书对象 public int update(Book book)throws Exception; /根据图书编号查找该图书 /根据图书编号查找该图书 public Book query(int bid) throws Exception; public List query(String bookname) throws Exception; /获得总记录的方法 public int getAllRowCount() t
11、hrows Exception; BookImpl.java 实现类 实现了接口 继承了BaseDao.javapackage combook.dao.impl;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.Statement;import java.util.ArrayList;import java.util.List;import combook.dao.BaseDao;import combook.dao.BookDao;import combook.dto.Book;import
12、 common.dto.PageDto;public class BookImpl extends BaseDao implements BookDao /1、查询所有信息 返回一个 带有泛型的集合 public List getNewsList() throws Exception /定义一个集合 集合是对应的要返回出去的 泛型集合 List bookList=new ArrayList(); super.getConnection();/获得连接 通过父类的方法 conn.prepareStatement(select * from news); rs=ps.executeQuery();
13、/返回结果集 while(rs.next()/循环结果集中的数据判断结果集中是否还有下一个容 Book book=new Book();/创建一个实例对象 /把结果集中的图书信息封装到图书对象中去 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); /将图书对象添加到
14、集合中去 因为集合是带有图书泛型所以不需要强转 直接添加图书对象 bookList.add(book); /调用父类方法释放资源 super.closeResource(); return bookList; /获得数据库中所有的图书信息 public List getBooksList(PageDto pagedto) throws Exception /新建一个带有book泛型的集合 List bookList=new ArrayList(); super.getConnection();/第一步获得与数据库的连接 int start=pagedto.getStartIndex();/分页
15、查询开始 int end =pagedto.getEndIndex();/分页查询结束 /写分页查询的sql语句 String sql=select * from (select b.*,rownum rn from books b) where rn=? and rn?; ps=conn.prepareStatement(sql);/预编译sql语句 ps.setInt(1,start);/设置第一个参数的值 ps.setInt(2,end);/设置第二个参数的值 /执行查询语句 rs=ps.executeQuery(); /循环结果集的数据 while(rs.next() /实例化一个图书
16、的对象 Book book =new Book(); /把结果集中的图书信息封装到图书对象中去 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)
17、; super.closeResource(); return bookList; /向表中插入新书的方法 传入的是图书对象 返回影响的行数 public int insertBooks(Book book) throws Exception super.getConnection();/第一步获得与数据库的连接 /新建一个参数的数组 填充占位符 Object params=new Object5; params0=book.getBid(); params1=book.getBookName(); params2=book.getPrice(); params3=book.getImage(
18、); params4=book.getStock(); String sql=insert into book values(?,?,?,?,?); /预编译sql语句 ps=conn.prepareStatement(sql); /执行更新数据库的sql语句操作 int count=super.execute(sql, params); super.closeResource(); return count; /删除图书的方法 根据穿过来的图书id public int delete(int bid) throws Exception super.getConnection();/第一步获得
19、与数据库的连接 /填充占位符 Object params=new Object1; params0=bid; String sql=delete from book where bid=?;/删除的sql语句 /预编译sql语句 ps=conn.prepareStatement(sql); /调用父类的执行sql int count=super.execute(sql, params); /释放资源 super.closeResource(); /返回受影响的行数 return count; /修改图书的方法 传入图书的对象 public int update(Book book) throw
20、s Exception super.getConnection();/第一步获得与数据库的连接 /填充占位符 Object params=new Object4; params0=book.getBookName(); params1=book.getPrice(); params2=book.getImage(); params3=book.getStock(); String sql=update book set bookname=?,b_price=?,image=?,stock=?; ps=conn.prepareStatement(sql); int count=super.exe
21、cute(sql, params); super.closeResource(); return count; public Book query(int bid) throws Exception super.getConnection();/第一步获得与数据库的连接 Book book=new Book(); /填充占位符 Object params=new Object1; params0=bid; String sql=select * from books where bid=?; conn.prepareStatement(sql); rs=super.excuteSql(sql,
22、 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(); return book; public List query(String bookname) throws Excep
23、tion super.getConnection();/第一步获得与数据库的连接 /新建一个带有book泛型的集合 List bookList=new ArrayList(); /填充占位符 /Object params=new Object1; /params0=bookname; String sql=select * from books where bookname like ?; ps=conn.prepareStatement(sql); ps.setString(1, %+bookname+%); /rs=super.excuteSql(sql, params); rs=ps.e
24、xecuteQuery(); while(rs.next() Book book=new Book(); /把结果集中的图书信息封装到图书对象中去 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(); return boo
25、kList; public int getAllRowCount() throws Exception super.getConnection();/获得连接 int count=0; /查找到所有记录 String sql=select count(*) from books; ps=conn.prepareStatement(sql);/预编译sql语句 rs=ps.executeQuery();/返回一个结果集 if(rs.next() count=rs.getInt(1);/获得结果集的第一条 super.closeResource(); return count; 用户表 UserI
26、nfoDao.java 接口package combook.dao;import java.util.List;import combook.dto.Book;import combook.dto.UserInfo;import common.dto.PageDto;public interface UserInfoDao /传入一个用户的对象 判断这个对象是否在数据库中存在 public int queryObject(UserInfo user) throws Exception; /根据用户名查找该数据库表中有没有重复的用用户 public int query(String userNa
27、me) throws Exception; /增加一个用户信息 -传入一个用户对象 public int insertUserInfo(UserInfo user)throws Exception; /修改信息 -传入的是用户对象 public int update(UserInfo user)throws Exception; UserInfoDaoImpl实现类package combook.dao.impl;import java.sql.SQLException;import java.util.List;import combook.dao.BaseDao;import combook.dao.UserInfoDao;import combook.dto.Book;import combook.dto.UserInfo;import common.dto.PageDto;public class UserInfoDaoImpl extends BaseDao implements UserInfoD
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1