第六次作业 大作业 基于hibernate的增删改查

实现前提 :

建立四个基础表 实现实体类之间的关系关联映射

对应关系:

图书与图书ID之间是一对一,图书ID与图书价格是多对多,图书类型和图书ID是多对多,图书ID和图书类型是多对一,图书和图书价格是多对多。

四个实体类:

Book类:

package homework.xo;


public class Book {
	private int id;
	private String name;
	private BookId bi;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public BookId getSc() {
		return bi;
	}
	public void setSc(BookId bi) {
		this.bi = bi;
	}
	
}

BookId类:

package homework.xo;

import java.util.HashSet;
import java.util.Set;

public class BookId {
	private int id;
	private String name;
	private Booktype fx;
	private Book b;
	private Set<Bookprice> bp = new HashSet<Bookprice>();
	public Set<Bookprice> getCourse() {
		return bp;
	}
	public void setCourse(Set<Bookprice> course) {
		this.bp = course;
	}
	public Book getS() {
		return b;
	}
	public void setS(Book b) {
		this.b = b;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Booktype getFx() {
		return fx;
	}
	public void setFx(Booktype fx) {
		this.fx = fx;
	}

}

Bookprice类:

package homework.xo;


import java.util.HashSet;
import java.util.Set;

public class Bookprice {
	private int id;
	private String classname;
	private Set<BookId> sc = new HashSet<BookId>();
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getClassname() {
		return classname;
	}
	public void setClassname(String classname) {
		this.classname = classname;
	}
	public Set<BookId> getSc() {
		return sc;
	}
	public void setSc(Set<BookId> sc) {
		this.sc = sc;
	}

}

Booktype类:

package homework.xo;

import java.util.HashSet;
import java.util.Set;

public class Booktype {
	private int id;
	private String Booktype;
	private Set<BookId> sc = new HashSet<BookId>();
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getXueyuan() {
		return Booktype;
	}
	public void setXueyuan(String Booktype) {
		this.Booktype = Booktype;
	}
	public Set<BookId> getSc() {
		return sc;
	}
	public void setSc(Set<BookId> sc) {
		this.sc = sc;
	}
	}

实体配置:

Book.hbm.xml:

<hibernate-mapping >

    <!--类名为User,表名也为User-->
    <class name="homework.xo.Bookprice"  table="bookprice" >

        <!--主键映射,属性名为id,列名也为id-->
        <id name="id" column="id">
            <!--根据底层数据库主键自动增长-->
            <generator class="native"/>

        </id>
        
        <!--非主键映射,属性和列名一一对应-->
        <property name="classname" column="classname"/>
        
        
        <set name="sc" table="s_c" cascade="save-update,delete" inverse="true">   <!--inverse="true"-->
           <key column="cid"/>
           
           <many-to-many class="homework.xo.Bookprice" column="sid"/>
           
        </set>
    </class>
</hibernate-mapping>

BookId.hbm.xml:

<hibernate-mapping >

    <!--类名为User,表名也为User-->
    <class name="homework.xo.BookId"  table="bookid">

        <!--主键映射,属性名为id,列名也为id-->
        <id name="id" column="id">
            <!--根据底层数据库主键自动增长-->
            <generator class="native"/>

        </id>
        
        <!--非主键映射,属性和列名一一对应-->
        <property name="name" column="name"/>
        
        <many-to-one name="fx" class="homework.xo.Booktype" column="cid"/>
        
        <one-to-one name="s" class="homework.xo.Book"  cascade="save-update,delete"/>  <!--constrained="true"-->
        
        <set name="Bookprice" table="s_c" > <!--cascade="save-update,delete"-->
           <key column="sid"/>
           
           <many-to-many class="homework.xo.Bookprice" column="cid"/>
           
        </set>
    </class>
</hibernate-mapping>

Bookprice.hbm.xml:

<hibernate-mapping >

    <!--类名为User,表名也为User-->
    <class name="homework.xo.Bookprice"  table="bookprice" >

        <!--主键映射,属性名为id,列名也为id-->
        <id name="id" column="id">
            <!--根据底层数据库主键自动增长-->
            <generator class="native"/>

        </id>
        
        <!--非主键映射,属性和列名一一对应-->
        <property name="classname" column="classname"/>
        
        
        <set name="sc" table="s_c" cascade="save-update,delete" inverse="true">   <!--inverse="true"-->
           <key column="cid"/>
           
           <many-to-many class="hoework.xo.BookId" column="sid"/>
           
        </set>
    </class>
</hibernate-mapping>

Booktype.hbm.xml:

<hibernate-mapping >

    <!--类名为User,表名也为User-->
    <class name="homework.xo.Bookprice"  table="bookprice" >

        <!--主键映射,属性名为id,列名也为id-->
        <id name="id" column="id">
            <!--根据底层数据库主键自动增长-->
            <generator class="native"/>

        </id>
        
        <!--非主键映射,属性和列名一一对应-->
        <property name="classname" column="classname"/>
        
        
        <set name="sc" table="s_c" cascade="save-update,delete" inverse="true">   <!--inverse="true"-->
           <key column="cid"/>
           
           <many-to-many class="homework.xo.BookId" column="sid"/>
           
        </set>
    </class>
</hibernate-mapping>

DAO层:

package homework.five.test;

public interface crudDao {
	public void add();
	public void select();
	public void updata();
	public void delete();

}

 
package homeworka;
import java.util.List;
import org.hibernate.Session; import org.hibernate.Transaction; import org.hibernate.query.Query; import org.junit.Test;
import homework.utils.HibernateUtils; import homework.xo.Book; import homework.xo.Bookprice; import homework.xo.Booktype; import homework.xo.BookId;
public class test {    @Test   public void add() {    //获取Session,开启事务       Session session = HibernateUtils.getSession();    Transaction transaction = session.beginTransaction();       //创建一个图书类型    Booktype g = new Booktype();    g.setXueyuan("");       //创建两个图书的信息    Book b1 = new Book();    b1.setName("SSH");    Book b2 = new Book();    b2.setName("Oracle");      //创建两个图书ID卡    BookId bi1 = new BookId();    bi1.setName(b1.getName());    BookId bi2 = new BookId();    bi2.setName(b2.getName());       //将图书ID关联到图书类型    bi1.setFx(g);    bi2.setFx(g);       //添加图书价格    Bookprice bp1 = new Bookprice();    bp1.setClassname("12元");    Bookprice bp2 = new Bookprice();    bp2.setClassname("20元");    Bookprice bp3 = new Bookprice();    bp3.setClassname("50元");             session.save(bp1);    session.save(bp2);    session.save(bp3);    session.save(g);    session.save(b1);    session.save(b2);    session.save(bi1);    session.save(bi2);       transaction.commit();    session.close();     }    @Test  public void delete() {   //获取Session,开启事务       Session session = HibernateUtils.getSession();    Transaction transaction = session.beginTransaction();       BookId sc = session.get(BookId.class,1);    session.delete(sc);       transaction.commit();    session.close();  }    public void select() {   //获取Session,开启事务       Session session = HibernateUtils.getSession();    Transaction transaction = session.beginTransaction();       BookId sc = session.get(BookId.class,1);    String s = sc.getName();    System.out.println(s);       transaction.commit();    session.close();  }
   public void update() {   //获取Session,开启事务       Session session = HibernateUtils.getSession();    Transaction transaction = session.beginTransaction();       BookId sc = session.get(BookId.class,1);    sc.setName("zzz");    System.out.println(sc.getName());       Book s = session.get(Book.class,1);    s.setName(sc.getName());       session.save(sc);    session.save(s);       transaction.commit();    session.close();  }   }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值