当前位置:编程学习 > JAVA >>

求大神帮帮忙。做了一半不会做了。一个题目

1,创建图书库存表用来存储图书库存信息,表结构如下
字段 类型 说明
id Varchar(5) 图书id
bookName Varchar(100) 图书名称
price int 价格
publishTime datetime 出版时间
publisher Varchar(50) 出版社
quantity int 库存数量
相应的数据 如下
Id bookName Price publishTime Publisher quantity
b 0001 Java面向对象 45 2008-08-10 商务 20
B0002 Web设计基础 40 2010-08-12 机械 15
B0003 Javaweb设计 50 2011-10-11 人民 40
B0004 Javaee框架 45 2012-12-20 电子 20
2,创建图书销售记录表book_order,结构如下
字段 类型 说明
Id int 销售主键
Book_id int 图书ID
saleDate datetime 销售日期
quantity int 销售数量
3,针对book表和book_order表编写实体类book和bookOrder,配置hibernate映射文件,需要配置book和bookOrder之间的双向一对多(多对一)关系。
4,编写数据访问类bookDao和bookOrderDao,分别完成查看所有库存图书情况,图书销售,查看图书销售详情等方法。
5,编写业务类bookService和bookOrderService,分别完成查看所有库存图书情况,图书销售,查看图书销售详情等方法。
6,编写struts2的action类bookAction和bookOrderAction,分别完成查看所有库存图书情况,图书销售,查看图书销售详情等方法。
7,编写图书困村列表页面books.jsp,以表格形式显示所有的图书,需要显示的内容包括图书的ID,图书名称,出版时间,出版社,价格,库存数量,并按照出版时间倒序排列。点击图书名称时进入图书销售列表页,点击销售,进入对应的图书销售页面。
图书列表页面books.jsp效果类似下面
ID 图书名称 出版时间 出版社 价格 数量 销售
B0005 嵌入式开发 2013-03-15 商务 40 10 销售
B0003 Javaweb 设计 2012-02-03 人民 50 40 销售
B0004 Javaee 框架 2011-05-07 电子 45 20 销售
b0002 Web设计基础 2010-03-16 机械 40 15 销售
B0001 Java面向对象 2008-08-10 商务 45 20 销售
B0002 Web设计基础 2010-03-16 机械 40 15 销售
B0001 Java面向对象 2008-08-10 商务 45 20 销售
点击销售,进入对应图书的销售页面saleBook.jsp,销售数量需要填写,其他信息是只读的,点击销售进行图书的销售。销售完毕后,返回图书库存列表页面。图书销售页面saleBook.jsp效果如下
图书销售
图书名称 Java web设计
出版社 人民
出版日期 2012-02-03
库存数量 40
销售数量
销售          取消
在图书列表页面点击图书名称,则显示对应图书的销售列表页。图书销售列表页saleBookList.jsp效果如下图
图书名称 出版社 价格 销售日期 数量
Java web设计  人民 50 2012-04-01 2
Java web设计 人民 50 2012-06-01 5
Java web设计 人民 50 2012-047-06 15
Java web设计 人民 50 201210-01 10
其中dao和service应该怎么写啊 --------------------编程问答-------------------- DBHelper代码
 

package com.hebut.util; 

 

import java.sql.Connection; 

import java.sql.DriverManager; 

import java.sql.PreparedStatement; 

import java.sql.ResultSet ; 

import java.sql.SQLException; 

import java.sql.Statement; 

 

public final class DBHelper { 

 

    // 此方法为获取数据库连接 

    public static Connection getConnection() { 

        Connection conn = null ; 

 

        try { 

            String driver = "com.mysql.jdbc.Driver"; // 数据库驱动 

            String url = "jdbc:MySQL://127.0.0.1:3306/school";// 数据库 

            String user = "root"; // 用户名 

            String password = "hadoop"; // 密码 

            Class.forName (driver); // 加载数据库驱动 

            if (null == conn) { 

                conn = DriverManager.getConnection (url, user, password); 

            } 

        } catch (ClassNotFoundException e) { 

            System.out .println("Sorry,can't find the Driver!"); 

            e.printStackTrace(); 

        } catch (SQLException e) { 

            e.printStackTrace(); 

        } catch (Exception e) { 

            e.printStackTrace(); 

        } 

        return conn; 

    } 

 

    /** 

     * 增删改【 Add 、 Del 、 Update 】 

     * 

     * @param sql 

     * @return int 

     */ 

    public static int executeNonQuery(String sql) { 

        int result = 0; 

        Connection conn = null ; 

        Statement stmt = null ; 

 

        try { 

            conn = getConnection (); 

            stmt = conn.createStatement(); 

            result = stmt.executeUpdate(sql); 

        } catch (SQLException err) { 

            err.printStackTrace(); 

            free (null , stmt, conn); 

        } finally { 

            free (null , stmt, conn); 

        } 

 

        return result; 

    } 

 

    /** 

     * 增删改【 Add 、 Delete 、 Update 】 

     * 

     * @param sql 

     * @param obj 

     * @return int 

     */ 

    public static int executeNonQuery(String sql, Object... obj) { 

        int result = 0; 

        Connection conn = null ; 

        PreparedStatement pstmt = null ; 

 

        try { 

            conn = getConnection (); 

            pstmt = conn.prepareStatement(sql); 

 

            for (int i = 0; i < obj.length; i++) { 

                pstmt.setObject(i + 1, obj[i]); 

            } 

 

            result = pstmt.executeUpdate(); 

        } catch (SQLException err) { 

            err.printStackTrace(); 

            free (null , pstmt, conn); 

        } finally { 

            free (null , pstmt, conn); 

        } 

        return result; 

    } 

 

    /** 

     * 查【 Query 】 

     * 

     * @param sql 

     * @return ResultSet 

     */ 

    public static ResultSet executeQuery(String sql) { 

        Connection conn = null ; 

        Statement stmt = null ; 

        ResultSet rs = null ; 

 

        try { 

            conn = getConnection (); 

            stmt = conn.createStatement(); 

            rs = stmt.executeQuery(sql); 

        } catch (SQLException err) { 

            err.printStackTrace(); 

            free (rs, stmt, conn); 

        } 

 

        return rs; 

    } 

 

    /** 

     * 查【 Query 】 

     * 

     * @param sql 

     * @param obj 

     * @return ResultSet 

     */ 

    public static ResultSet executeQuery(String sql, Object... obj) { 

        Connection conn = null ; 

        PreparedStatement pstmt = null ; 

        ResultSet rs = null ; 

 

        try { 

            conn = getConnection (); 

            pstmt = conn.prepareStatement(sql); 

            

            for (int i = 0; i < obj.length; i++) { 

                pstmt.setObject(i + 1, obj[i]); 

            } 

            

            rs = pstmt.executeQuery(); 

        } catch (SQLException err) { 

            err.printStackTrace(); 

            free (rs, pstmt, conn); 

        } 

 

        return rs; 

    } 

 

    /** 

     * 判断记录是否存在 

     * 

     * @param sql 

     * @return Boolean 

     */ 

    public static Boolean isExist(String sql) { 

        ResultSet rs = null ; 

 

        try { 

            rs = executeQuery (sql); 

            rs.last(); 

            int count = rs.getRow(); 

            if (count > 0) { 

                return true ; 

            } else { 

                return false ; 

            } 

        } catch (SQLException err) { 

            err.printStackTrace(); 

            free (rs); 

            return false ; 

        } finally { 

            free (rs); 

        } 

    } 

 

    /** 

     * 判断记录是否存在 

     * 

     * @param sql 

     * @return Boolean 

     */ 

    public static Boolean isExist(String sql, Object... obj) { 

        ResultSet rs = null ; 

 

        try { 

            rs = executeQuery (sql, obj); 

            rs.last(); 

            int count = rs.getRow(); 

            if (count > 0) { 

                return true ; 

            } else { 

                return false ; 

            } 

        } catch (SQLException err) { 

            err.printStackTrace(); 

            free (rs); 

            return false ; 

        } finally { 

            free (rs); 

        } 

    } 

 

    /** 

     * 获取查询记录的总行数 

     * 

     * @param sql 

     * @return int 

     */ 

    public static int getCount(String sql) { 

        int result = 0; 

        ResultSet rs = null ; 

 

        try { 

            rs = executeQuery (sql); 

            rs.last(); 

            result = rs.getRow(); 

        } catch (SQLException err) { 

            free (rs); 

            err.printStackTrace(); 

        } finally { 

            free (rs); 

        } 

 

        return result; 

    } 

 

    /** 

     * 获取查询记录的总行数 

     * 

     * @param sql 

     * @param obj 

     * @return int 

     */ 

    public static int getCount(String sql, Object... obj) { 

        int result = 0; 

        ResultSet rs = null ; 

 

        try { 

            rs = executeQuery (sql, obj); 

            rs.last(); 

            result = rs.getRow(); 

        } catch (SQLException err) { 

            err.printStackTrace(); 

        } finally { 

            free (rs); 

        } 

 

        return result; 

    } 

 

    /** 

     * 释放【 ResultSet 】资源 

     * 

     * @param rs 

     */ 

    public static void free(ResultSet rs) { 

        try { 

            if (rs != null ) { 

                rs.close(); 

            } 

        } catch (SQLException err) { 

            err.printStackTrace(); 

        } 

    } 

 

    /** 

     * 释放【 Statement 】资源 

     * 

     * @param st 

     */ 

    public static void free(Statement st) { 

        try { 

            if (st != null ) { 

                st.close(); 

            } 

        } catch (SQLException err) { 

            err.printStackTrace(); 

        } 

    } 

 

    /** 

     * 释放【 Connection 】资源 

     * 

     * @param conn 

     */ 

    public static void free(Connection conn) { 

        try { 

            if (conn != null ) { 

                conn.close(); 

            } 

        } catch (SQLException err) { 

            err.printStackTrace(); 

        } 

    } 

 

    /** 

     * 释放所有数据资源 

     * 

     * @param rs 

     * @param st 

     * @param conn 

     */ 

    public static void free(ResultSet rs, Statement st, Connection conn) { 

        free (rs); 

        free (st); 

        free (conn); 

    } 



--------------------编程问答-------------------- 你把数据库的基本操作,增删改查弄懂了自然就会写的。如果你是新手就不要那么快就struts什么的,先找韩顺平或者马士兵老师的视频看看jsp,servlet怎么写的。然后慢慢在过渡,没学到东西你问人怎么写也没用啊。 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 应该是用MVC的方法来做吧 --------------------编程问答-------------------- 既然你不会的是其中dao和service,那么你先把action写出来好么?
这样一步一步的看需要什么,就写什么,service和dao就出来了。 --------------------编程问答-------------------- 应该用mvc方法来做,其实这个很好做。你先做个简单的增删改查练练,练熟了就自然会了。 --------------------编程问答-------------------- 错误提示

%%%% Error Creating SessionFactory %%%%
org.hibernate.MappingException: Association references unmapped class: Book
at org.hibernate.cfg.HbmBinder.bindCollectionSecondPass(HbmBinder.java:2473)
at org.hibernate.cfg.HbmBinder$CollectionSecondPass.secondPass(HbmBinder.java:2752)
at org.hibernate.cfg.CollectionSecondPass.doSecondPass(CollectionSecondPass.java:66)
at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1221)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1377)
at com.haiersoft.util.HibernateUtils.<clinit>(HibernateUtils.java:18)
at com.haiersoft.dao.BookDao.getBook(BookDao.java:15)
at com.haiersoft.service.BookService.getBookInformation(BookService.java:12)
at test.main(test.java:12)
%%%% Error Creating SessionFactory %%%%
org.hibernate.InvalidMappingException: Could not parse mapping document from resource com/haiersoft/pojos/Book.hbm.xml
at org.hibernate.cfg.Configuration.addResource(Configuration.java:671)
at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:1679)
at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:1647)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1626)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1600)
at org.hibernate.cfg.Configuration.configure(Configuration.java:1520)
at com.haiersoft.util.HibernateUtils.rebuildSessionFactory(HibernateUtils.java:55)
at com.haiersoft.util.HibernateUtils.getSession(HibernateUtils.java:39)
at com.haiersoft.dao.BookDao.getBook(BookDao.java:15)
at com.haiersoft.service.BookService.getBookInformation(BookService.java:12)
at test.main(test.java:12)
Caused by: org.hibernate.DuplicateMappingException: Duplicate class/entity mapping com.haiersoft.pojos.Book
at org.hibernate.cfg.Configuration$MappingsImpl.addClass(Configuration.java:2407)
at org.hibernate.cfg.HbmBinder.bindRoot(HbmBinder.java:173)
at org.hibernate.cfg.Configuration.add(Configuration.java:771)
at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:606)
at org.hibernate.cfg.Configuration.addResource(Configuration.java:668)
... 10 more
Exception in thread "main" java.lang.NullPointerException
at com.haiersoft.dao.BookDao.getBook(BookDao.java:17)
at com.haiersoft.service.BookService.getBookInformation(BookService.java:12)
at test.main(test.java:12)
我的book.java
package com.haiersoft.pojos;

import java.io.Serializable;
import java.util.Date;

public class Book implements Serializable{
private String id;
private String bookName;
private int price;
private Date publishTime;
private String publisher;
private int quantity;
private BookOrder bookOrder;

public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getBookName() {
return bookName;
}
public void setBookName(String bookName) {
this.bookName = bookName;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public Date getPublishTime() {
return publishTime;
}
public void setPublishTime(Date publishTime) {
this.publishTime = publishTime;
}
public String getPublisher() {
return publisher;
}
public void setPublisher(String publisher) {
this.publisher = publisher;
}
public int getQuantity() {
return quantity;
}
public void setQuantity(int quantity) {
this.quantity = quantity;
}
public BookOrder getBookOrder() {
return bookOrder;
}
public void setBookOrder(BookOrder bookOrder) {
this.bookOrder = bookOrder;
}
public Book(String id,String bookName,int price, Date publishTime, String publisher, int quantity){
this.id = id;
this.bookName = bookName;
this.price = price;
this.publishTime = publishTime;
this.publisher = publisher;
this.quantity = quantity;
}
public Book(){}
}


我的bookdao。java
package com.haiersoft.dao;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;

import com.haiersoft.pojos.Book;
import com.haiersoft.util.HibernateUtils;

public class BookDao {
//根据id获得图书的信息
public Book getBook(String id){
Session s = HibernateUtils.getSession();
String hql = "from Book where id = ?";
Book book = (Book)s.get(Book.class, id);
s.close();
return book;
}
//获得所有库存图书的信息
public List<Book> getAllBook(){
Session s = HibernateUtils.getSession();
String hql = "from Book";
Query query = s.createQuery(hql);
List list = query.list();
return list;
}
//根据id减少库存的图书
public void deleteBook(Integer id){
Session s = HibernateUtils.getSession();
Transaction trans = s.beginTransaction();
String hql = "delete Book where id = ?";
Query query = s.createQuery(hql);
query.setInteger(0, id);
query.executeUpdate();
trans.commit();
s.close();
}
}

我的book.hbm.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.haiersoft.pojos.Book" table="book">
<id name="id" type="java.lang.String">
<column name="id" />
<generator class="native" />
</id>
<property name="bookName" type="java.lang.String" column="bookName" />
<property name="price" type="java.lang.Integer" column="price" />
<property name="publishTime" type="java.sql.Timestamp" column="publishTime" />
<property name="publisher" type="java.lang.String" column="publisher" />
<property name="quantity" type="java.lang.Integer" column="quantity" />
<many-to-one name="bookOrder" column="BookOrder_id" class="BookOrder"/>
</class>
</hibernate-mapping>

我的hibernate.cfg.xml
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- 配置MySQL连接属性 -->
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>
<property name="connection.url">
jdbc:mysql://localhost:3306/jxc
</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>
<!-- 在控制台显示SQL语句 -->
<property name="show_sql">true</property>
<!--根据需要自动生成、更新数据表 -->
<property name="hbm2ddl.auto">update</property>
<!-- 注册所有ORM映射文件 -->
<mapping resource="com/haiersoft/pojos/Book.hbm.xml" />
<mapping resource="com/haiersoft/pojos/BookOrder.hbm.xml" />
</session-factory>
</hibernate-configuration>

我的测试类test
import com.haiersoft.service.BookService;


public class test {

/**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
BookService bs = new BookService();
System.out.println(bs.getBookInformation("b0001").getBookName()+bs.getBookInformation("b0001").getPrice());
}
}
--------------------编程问答--------------------
引用 6 楼 saibeixiaoxiong 的回复:
应该用mvc方法来做,其实这个很好做。你先做个简单的增删改查练练,练熟了就自然会了。
麻烦看下7楼,是不是哪里不对。提示错误,谢谢了 --------------------编程问答--------------------
引用 5 楼 AA5279AA 的回复:
既然你不会的是其中dao和service,那么你先把action写出来好么?
这样一步一步的看需要什么,就写什么,service和dao就出来了。
麻烦看下7楼,是不是哪里不对。提示错误,谢谢了 --------------------编程问答--------------------
引用 9 楼 thcthc2 的回复:
引用 5 楼 AA5279AA 的回复:既然你不会的是其中dao和service,那么你先把action写出来好么?
这样一步一步的看需要什么,就写什么,service和dao就出来了。麻烦看下7楼,是不是哪里不对。提示错误,谢谢了

%%%% Error Creating SessionFactory %%%%
org.hibernate.MappingException: Association references unmapped class: Book
这两句是什么意思呢?
你自己试着理解下试试。感觉说的挺明显的。
 <mapping resource="com/haiersoft/pojos/Book.hbm.xml" />
我的book.hbm.xml --------------------编程问答--------------------
引用 10 楼 AA5279AA 的回复:
引用 9 楼 thcthc2 的回复:引用 5 楼 AA5279AA 的回复:既然你不会的是其中dao和service,那么你先把action写出来好么?
这样一步一步的看需要什么,就写什么,service和dao就出来了。麻烦看下7楼,是不是哪里不对。提示错误,谢谢了
%%%% Error Creating SessionFactory %%%%
org.hibe……
不是说没有配置book.hbm.xml文件吗?可是我在hibernate.xml里已经配置了啊 --------------------编程问答--------------------
引用 2 楼 lin5ting 的回复:
你把数据库的基本操作,增删改查弄懂了自然就会写的。如果你是新手就不要那么快就struts什么的,先找韩顺平或者马士兵老师的视频看看jsp,servlet怎么写的。然后慢慢在过渡,没学到东西你问人怎么写也没用啊。
麻烦看下7楼 --------------------编程问答--------------------
引用 11 楼 thcthc2 的回复:
引用 10 楼 AA5279AA 的回复:引用 9 楼 thcthc2 的回复:引用 5 楼 AA5279AA 的回复:既然你不会的是其中dao和service,那么你先把action写出来好么?
这样一步一步的看需要什么,就写什么,service和dao就出来了。麻烦看下7楼,是不是哪里不对。提示错误,谢谢了
%%%% Error Creating SessionF……

我晕,你注意大小写啊。我特意发了这两行不就是这个意思么。
<mapping resource="com/haiersoft/pojos/Book.hbm.xml" />大写的Book
我的book.hbm.xml
小写的。 --------------------编程问答--------------------
引用 13 楼 AA5279AA 的回复:
引用 11 楼 thcthc2 的回复:引用 10 楼 AA5279AA 的回复:引用 9 楼 thcthc2 的回复:引用 5 楼 AA5279AA 的回复:既然你不会的是其中dao和service,那么你先把action写出来好么?
这样一步一步的看需要什么,就写什么,service和dao就出来了。麻烦看下7楼,是不是哪里不对。提示错误,谢谢了
%%%% Err……
我的工程里确实是大写的,上面的写错了 --------------------编程问答-------------------- book.hbm.xml这个配置文件的
的名字是大写还是小写? --------------------编程问答--------------------
引用 15 楼 AA5279AA 的回复:
book.hbm.xml这个配置文件的
的名字是大写还是小写?
大写的 --------------------编程问答--------------------
引用 16 楼 thcthc2 的回复:
引用 15 楼 AA5279AA 的回复:book.hbm.xml这个配置文件的
的名字是大写还是小写?大写的
现在不先管我的配置了,您看看我写的代码什么的对吗?哪里有不足
补充:Java ,  Java EE
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,