问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

图书管理系统,用eclipse和oracle做

发布网友 发布时间:2022-04-14 06:25

我来回答

2个回答

懂视网 时间:2022-04-14 10:46

图书的MySQL数据库创建脚本: CREATE TABLE books ( id int NOT NULL AUTO_INCREMENT, title varchar(255) NOT NULL, description text, image_url varchar(255), price decimal(8, 2) NOT NULL, author varchar(255) NOT NULL, isbn varchar(255) NOT NULL,

图书的MySQL数据库创建脚本:

CREATE TABLE books (
 id int NOT NULL AUTO_INCREMENT,
 title varchar(255) NOT NULL,
 description text,
 image_url varchar(255),
 price decimal(8, 2) NOT NULL,
 author varchar(255) NOT NULL,
 isbn varchar(255) NOT NULL,
 publisher varchar(255) NOT NULL,
 user_id int NOT NULL,
 PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

图书实体类文件Book.java主要代码:

public class Book {
 private Long id;
 private String title;
 private String description;
 private String image_url;
 private double price;
 private String author;
 private String isbn;
 private String publisher;
 private User user;
 ...
}

在User类中添加集合变量books:

public class User {
 ...
 private Set books = new HashSet();
 ...
}

在User.hbm.xml中配置和图书的一对多关联:



 
 

图书的表映射文件Book.hbm.xml代码:


 
 
  
 
 
 
 
 
 
 
 
 
 

BookService.java中的代码相对简单,因为没什么复杂的业务逻辑,只是负责把Action和Dao这两层连接起来。

BookDao.java中的代码主要实现图书的读取,更新和删除:

package name.dohkoos.book.dao;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import name.dohkoos.book.model.Book;
public class BookDao {
 private SessionFactory sessionFactory;
 public void setSessionFactory(SessionFactory sessionFactory) {
 this.sessionFactory = sessionFactory;
 }
 public List getBookList() {
 Session session = sessionFactory.openSession();
 try {
  Query query = session.createQuery("from Book b");
  List bookList = query.list();
  return bookList;
 } finally {
  session.close();
 }
 }
 public Book getBook(Long bookId) {
 Session session = sessionFactory.openSession();
 try {
  Query query = session.createQuery("from Book b where b.id = :id");
  query.setLong("id", bookId);
  query.setMaxResults(1);
  return (Book)query.uniqueResult();
 } finally {
  session.close();
 }
 }
 public void saveOrUpdateBook(Book book) {
 Session session = sessionFactory.openSession();
 Transaction ts = null;
 try {
  ts = session.beginTransaction();
  session.saveOrUpdate(book);
  ts.commit();
 } finally {
  session.close();
 }
 }
 public void deleteBook(Long bookId) {
 Session session = sessionFactory.openSession();
 Transaction ts = null;
 try {
  ts = session.beginTransaction();
  Book book = (Book)session.get(Book.class, bookId);
  session.delete(book);
  ts.commit();
 } finally {
  session.close();
 }
 }
}

BookAction.java负责协调图书应用程序间的运转。接收访问请求,与模型进行交互,将合适的视图展示给用户:

package name.dohkoos.book.action;
import java.util.List;
import name.dohkoos.account.model.User;
import name.dohkoos.book.model.Book;
import name.dohkoos.book.service.BookService;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class BookAction extends ActionSupport {
 private static final long serialVersionUID = 2538923417705852774L;
 private Long bookId;
 private Book book;
 private List bookList;
 private BookService bookService;
 public String list() throws Exception {
 bookList = bookService.getBookList();
 return "list";
 }
 public String show() throws Exception {
 book = bookService.getBook(bookId);
 return "show";
 }
 public String input() throws Exception {
 if (bookId != null) {
  book = bookService.getBook(bookId);
 }
 return INPUT;
 }
 public String saveOrUpdate() throws Exception {
 User user = (User)ActionContext.getContext().getSession().get("user");
 book.setUser(user);
 bookService.saveOrUpdateBook(book);
 return SUCCESS;
 }
 public String delete() throws Exception {
 bookService.deleteBook(bookId);
 return SUCCESS;
 }
 ...
}

在applicationContext.xml中添加Book的相关配置,如下面代码所示:


 ...
 
 
  ...
  name/dohkoos/book/model/Book.hbm.xml
 
 

...


 


 


 

在Struts 2配置文件struts.xml中include文件book.xml。以下是book.xml文件的内容:




 
 
  /books/list.jsp
  /books/show.jsp
  /books/form.jsp
  listBook
 
 

视图文件show.jsp作为显示单本图书的信息,代码很简单,就不放出来了,只把list.jsp和form.jsp的代码列出来。

list.jsp用来显示所有的图书:


Listing books

Title Description Image url Price Author ISBN Publisher Action
Show Edit Destroy
Add

当用户新建或者更新图书时,视图form.jsp就上场了。因为被两个逻辑使用,显示的标题等信息也不相同,所以需要判断图书的id是否存在,如果不存在的话即是新建业务,否则就是更新操作。



 

Editing book

Add book

Show | Back

最后还要完成图书模型的服务端校验。Struts 2的校验文件有两种格式:ActionName-validation.xml和ActionName-alias-validation.xml。第一种会对该Action中的每个方法进行校验,不符合只对saveOrUpdate校验的要求。在BookAction.java同目录下创建BookAction-saveOrUpdateBook-validation.xml文件:


 
 
  true
  
 
 

当然,还要在Book.java所在的位置创建Book-validation.xml文件:


 
 
  Price is required
 
 
 ...
 
 
  Price is required
 
 
  0.01
  Price should be at least 0.01
 
 

看着BookAction-saveOrUpdateBook-validation.xml这么长的文件名是不是有点无语:)没关系,BookAction-validation.xml配置文件还是可以用的,只要在BookAction.java中那些不需要进行校验的方法上添加@SkipValidation;也可以在action配置中启用validation.excludeMethods参数:


 
 list,show,input,delete
 
 ...

代码下载:https://github.com/dohkoos/JBookShelf

热心网友 时间:2022-04-14 07:54

我不知道你是哪里不会,这就是做一个基本的CRUD(增删改查),在数据库创建三个表(
【图书:图书编号、图书名称、图书类型、作者、出版社、库存】、
【供应商:供应商编号、供应商名称、供书类型、地址、电话】、
【图书类型:信息类、建筑类、化学类、生物类】
),编写页面,创建数据库链接,请求的一些处理。最基础的可以使用mvc,高端一点的可以使用框架(hibernate/mybatis 大型的项目可以使用SSH,SSM)追问数据库的连接怎么弄

追答JDBC.jer+oracle.jer包,如果MVC就使用手写JDBC,框架的话使用它底层封装就行了(前提要会这个框架),
public void oracle_jdbc(string url,string username,string password){
Connection cn = null; //声明连接对象
PreparedStatement pstmt =null; /*或 Statement,区别百度*/
Resultset rs = null; //返回结果集处理对象
try{
//1) 加载JDBC驱动
Class.forname(driveClassName);
//2) 与数据库建立连接url =路径(不是安装路径),username=数据库名,password=密码
cn = DriverManager.getConnection(url,username,password);
//3) 发送SQL语句,并得到返回结果
pstmt = cn.prepareStatement(“select * from user where username = ?”);
pstmt.setString(1,userName);
//4) 处理返回结果
Resultset rs = pstmt.executeQuery();
while(rs.next()){
system.out.println(rs.getInt(“subject”) + “ |” + rs.getFloat(“score”) );
}
}catch(Exception e){
e.printStackTrace();
}finally{
//5) 关闭资源 ps:重点反序关闭,可以另写个关闭方法调用
if(rs != null) try{ rs.close() }catch(exception e){}
if(pstmt != null) try{pstmt.close()}catch(exception e){}
if(cn != null) try{ cn.close() }catch(exception e){}
}
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
香蕉酸奶什么时候吃对减肥效果好-香蕉酸奶几点吃最佳时间 是是什么词性 魔兽世界狂暴战选什么种族看起来霸气威武?LM和BL分别说下。牛头人... 表达喜怒哀乐的成语有哪些? 问:我跟我朋友都19岁了女生就,我们想一起外面住宿一起工作,但是她很听... 女孩子高中毕业就可以不征求大人随便在外过夜了吗 ...19岁的女学生,和男朋友住宾馆会不会被学校查到吗??宾馆和学校有关系... ...女生就不能去闺蜜那里过夜?我都已经19岁了我爸妈还管我 哑然失笑的近义词和反义词是什么_哑然失笑是什么意思? 在黄梓良那儿算了说正缘桃花在猪年会出现,现在都鼠年了还没出现是骗子... 想申请香港的计算机相关硕士生,问问时间是否还够?我的条件是否有机会申请到奖学金? 开一家小型广告公司一个月能赚多少钱? 广告设计师一个月多少钱? 广告设计,学会了一个月有多少钱? 请问如果要大三的时候实习,该怎样找实习单位啊?专业是电子商务。 读广告设计容易找工作吗?一个月能得到多少工资啊? 小黄鱼煮粉干农家烧法 学广告设计的毕业了一月的工资大概是多少? 我大四了。电子商务专业营销管理方向,二本。想请教各位过来人,实习是咋回事?要注意些什么事项?谢了 现在做广告设计工资有多少钱 路边广告设计收入多少? 做平面广告设计一般不包吃的住的。一个月多少薪水? 辽阳市成大广告设计师,底薪三千,如果加提成一个月大约能挣多少钱 2020高考一本多少分?二本多少分? 我是女生,我叫Heather,想要一个英文姓氏,是姓氏,不是名字!不怎么... 高考一本要多少分 新高考怎么算一本线 游戏老闪退是怎么回事 为什么我的游戏进不去了,老是闪退 这个男的是网红还是明星啊,叫什么名字? 电教中控系统的电教中央控制器的选择 电教设备有哪些 高中里的电教设备中多媒体控制(中控)按钮失常时应该怎样恢复? 电教设备把电脑分辨率调到最高蓝屏后怎么解决 西安优普智能工程有限公司怎么样? 南京安睿科教学设备有限公司怎么样? 南昌卓恩医疗器械有限公司怎么样? 哪里有生产电教设备厂家 怎样管理学校的视频展台、投影机等教学设备 关于理财的相关知识 利润率的公式 把洗洁精倒在白酒里面,喝了会怎么样? 生活中洗洁精有无水乙醇吗 酒精算是洗涤剂吗? 火锅服务员工作计划工作目标怎么写? 液晶屏幕清洁剂里,有含酒精吗 酒精与洗洁精碱混合会有什么反应 工伤保险怎么撤销 今日校园中的保险申请后怎么撤销 求一个简单的基于Java语言的图书管理系统,实现增删改查功能。