Hibernate学习笔记(五)(Hibernate映射类型)

来源:互联网 发布:网络经营管理办法 编辑:程序博客网 时间:2024/06/05 20:50

一:基本类型映射


Book类

public class Book {private int id; private String author; //作者private String bookName;//书名private Date publishDate;//发布日期private Blob bookPic;//封面private boolean specialPrice;//是否特价private float price;//价格private String introduction;//介绍public int getId() {return id;}public void setId(int id) {this.id = id;}public String getAuthor() {return author;}public void setAuthor(String author) {this.author = author;}public String getBookName() {return bookName;}public void setBookName(String bookName) {this.bookName = bookName;}public Date getPublishDate() {return publishDate;}public void setPublishDate(Date publishDate) {this.publishDate = publishDate;}public Blob getBookPic() {return bookPic;}public void setBookPic(Blob bookPic) {this.bookPic = bookPic;}public boolean isSpecialPrice() {return specialPrice;}public void setSpecialPrice(boolean specialPrice) {this.specialPrice = specialPrice;}public float getPrice() {return price;}public void setPrice(float price) {this.price = price;}public String getIntroduction() {return introduction;}public void setIntroduction(String introduction) {this.introduction = introduction;}}
Book.hbm.xml

<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping package="com.zhu.model"><class name="Book" table="t_book"> <id name="id" column="bookId"> <generator class="native"></generator> </id> <property name="author" length="20" type="string"></property> <property name="bookName" length="20"></property> <property name="publishDate" type="date"></property> <property name="specialPrice" type="boolean"></property> <property name="bookPic" type="blob"></property> <property name="price" type="float"></property>  <property name="introduction" type="text"></property></class></hibernate-mapping>
public class StudentTest {public static void main(String[] args) throws Exception {SessionFactory sessionFactory=HibernateUtil.getSessionFactory();Session session=sessionFactory.openSession();//生成session   session.beginTransaction();     //开启事务      Book book=new Book();    book.setAuthor("朱成中");   book.setBookName("或许这就是男人吧");   book.setPrice(999.999f);   book.setPublishDate(new SimpleDateFormat("yyyy-MM-dd").parse("2017-7-4"));   book.setSpecialPrice(true);   book.setIntroduction("男人必看的书");      LobHelper lobHelper=session.getLobHelper();   InputStream in=new FileInputStream("d://java编程思想.jpg");   Blob bookPic=lobHelper.createBlob(in, in.available());   book.setBookPic(bookPic);   session.save(book);   session.getTransaction().commit(); //提交事务    session.close(); //关闭session    }}

二:集合类型映射
1,Set 无序元素不可重复

Student类

public class Student {private int id;private String name;@Overridepublic String toString() {return "Student [id=" + id + ", name=" + name + "]";}private Set<String >imageSet=new HashSet<String>();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 Set<String> getImageSet() {return imageSet;}public void setImageSet(Set<String> imageSet) {this.imageSet = imageSet;}}

Student.hbm.xml

<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping package="com.zhu.model"><class name="Student" table="t_student"> <id name="id" column="stuId"> <generator class="native"></generator> </id> <property name="name"></property> <set name="imageSet" table="t_image"> <key column="studentId"></key> <element column="imageName" type="string"></element>  </set></class></hibernate-mapping>

Junit

@Testpublic void testSet() {Student s=new Student();s.setName("朱成中");s.getImageSet().add("image1.jpg");s.getImageSet().add("image2.jpg");s.getImageSet().add("image3.jpg");s.getImageSet().add("image3.jpg");session.save(s);}@Testpublic void testSetSearch() {Student s=(Student)session.get(Student.class, 1);Iterator it=s.getImageSet().iterator();while(it.hasNext()){String imageName=(String) it.next();System.out.println(imageName);}}


2,List 有序元素可重复

Student2类

public class Student2 {private int id;private String name;@Overridepublic String toString() {return "Student [id=" + id + ", name=" + name + "]";}private List<String>imageList=new ArrayList<String>();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 List<String> getImageList() {return imageList;}public void setImageList(List<String> imageList) {this.imageList = imageList;}}

Student.hbm.xml

<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping package="com.zhu.model"><class name="Student2" table="t_student"> <id name="id" column="stuId"> <generator class="native"></generator> </id> <property name="name"></property> <list name="imageList" table="t_image2"> <key column="studentId"></key> <list-index column="imageIndex"> </list-index> <element column="imageName" type="string"></element>  </list></class></hibernate-mapping>
JUnit

@Testpublic void testList() {Student2 s=new Student2();s.setName("朱成中");s.getImageList().add("image1.jpg");s.getImageList().add("image2.jpg");s.getImageList().add("image3.jpg");s.getImageList().add("image3.jpg");session.save(s);}@Testpublic void testListSearch() {Student2 s=(Student2)session.get(Student2.class, 2);for(String image:s.getImageList()){System.out.println(image);}}


3,Bag 无序元素可重复

Student3类

public class Student3 {private int id;private String name;@Overridepublic String toString() {return "Student [id=" + id + ", name=" + name + "]";}private List<String >imageList=new ArrayList<String>();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 List<String> getImageList() {return imageList;}public void setImageList(List<String> imageList) {this.imageList = imageList;}}
Student3.hbm.xml

<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping package="com.zhu.model"><class name="Student3" table="t_student"> <id name="id" column="stuId"> <generator class="native"></generator> </id> <property name="name"></property> <idbag name="imageList" table="t_image3"> <collection-id type="int" column="imageId"> <generator class="increment"></generator> </collection-id> <key column="studentId"></key> <element column="imageName" type="string"></element> </idbag></class></hibernate-mapping>

JUnit
@Testpublic void testBag() {Student3 s=new Student3();s.setName("朱成中");s.getImageList().add("image1.jpg");s.getImageList().add("image2.jpg");s.getImageList().add("image3.jpg");s.getImageList().add("image3.jpg");session.save(s);}@Testpublic void testBagSearch() {Student3 s=(Student3)session.get(Student3.class, 3);for(String image:s.getImageList()){System.out.println(image);}}


4,Map 键值对
Student4类

public class Student4 {private int id;private String name;@Overridepublic String toString() {return "Student [id=" + id + ", name=" + name + "]";}private Map<Integer,String>imageMap=new HashMap<Integer,String>();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 Map<Integer, String> getImageMap() {return imageMap;}public void setImageMap(Map<Integer, String> imageMap) {this.imageMap = imageMap;}}

Student4.hbm.xml

<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping package="com.zhu.model"><class name="Student4" table="t_student"> <id name="id" column="stuId"> <generator class="native"></generator> </id> <property name="name"></property> <map name="imageMap" table="t_image4"> <key column="studentId"></key> <map-key column="imageKey" type="int"></map-key> <element column="imageName" type="string"></element> </map></class></hibernate-mapping>
JUnit

@Testpublic void testMap() {Student4 s=new Student4();s.setName("朱成中");s.getImageMap().put(1, "image1.jpg");s.getImageMap().put(2, "image2.jpg");s.getImageMap().put(3, "image3.jpg");s.getImageMap().put(4, "image3.jpg");session.save(s);}@Testpublic void testMapSearch() {Student4 s=(Student4)session.get(Student4.class, 4);Set<Integer>set=s.getImageMap().keySet();for(int key:set){String image=s.getImageMap().get(key);System.out.println(image);}}


阅读全文
1 0
原创粉丝点击