Hibernate之复合主键映射
来源:互联网 发布:select2.js api 编辑:程序博客网 时间:2024/06/06 00:24
一,概述
复合主键也是开发中经常遇到的需求,这篇博客就是关于复合主键映射,开始吧!
二,实体类准备
1)复合主键类
package com.bighuan.d_compositeKey;import java.io.Serializable;/** * 复合主键类:用户名和地址唯一标识一条记录 * * @author bighuan * */public class CompositeKeys implements Serializable {private String userName;private String address;public CompositeKeys() {}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}}2)表对应的实体类User.java
package com.bighuan.d_compositeKey;public class User {public User() {}private int age;private CompositeKeys keys;public int getAge() {return age;}public void setAge(int age) {this.age = age;}public CompositeKeys getKeys() {return keys;}public void setKeys(CompositeKeys keys) {this.keys = keys;}}
三,配置文件准备
1)User.java对应的映射文件User.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.bighuan.d_compositeKey"auto-import="true"><class name="User"><!-- 复合主键映射 --><composite-id name="keys"><key-property name="userName" type="string"></key-property><key-property name="address" type="string"></key-property></composite-id><property name="age" type="int"></property></class></hibernate-mapping>配置复合主键主要是通过<composite-id>来完成!
2)hibernate.cfg.xml(上一篇博客粘贴过这个文件,多复制一遍,加深印象)
<!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"><hibernate-configuration><session-factory><!--1, 数据库连接配置 --><property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property><property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hib_demo</property><property name="hibernate.connection.username">root</property><property name="hibernate.connection.password">abc</property><!--2, 数据库方法配置:告诉hibernate使用的是什么数据库 --><!-- hibernate在运行的时候,会根据不同的方言生成符合当前数据库语法的sql --><property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property><!--3, 其他相关配置:3.1展示hibernate在运行时执行的sql语句--><property name="hibernate.show_sql">true</property><!-- 3.2格式化sql语句配置 --><property name="hibernate.format_sql">true</property> <!-- 3.3自动建表 ,先删除后创建,不管有没有表--><!-- <property name="hibernate.hbm2ddl.auto">create</property> --><!-- 3.4有表就不创建,反之就创建 --><property name="hibernate.hbm2ddl.auto">update</property> <!--映射配置: 加载所有映射 --><mapping resource="com/bighuan/d_compositeKey/User.hbm.xml"/></session-factory></hibernate-configuration>
四,测试
1)插入数据,查询数据
package com.bighuan.d_compositeKey;import java.util.Date;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration;import org.junit.Test;public class App2 {private static SessionFactory sf = null;static {sf = new Configuration().configure().buildSessionFactory();}@Testpublic void testSave() throws Exception {// 创建对象CompositeKeys keys = new CompositeKeys();keys.setUserName("bighuan");keys.setAddress("江西南昌2");User user = new User();user.setAge(25);user.setKeys(keys);// 创建session(代表一个与数据库连接的会话)org.hibernate.Session session = sf.openSession();// 4,开启事务Transaction tx = session.beginTransaction();// 5,保存数据session.save(user);tx.commit();// 7,关闭session.close();}@Testpublic void testQuery() throws Exception {// 创建对象CompositeKeys keys = new CompositeKeys();keys.setUserName("bighuan");keys.setAddress("江西南昌");// 创建session(代表一个与数据库连接的会话)org.hibernate.Session session = sf.openSession();// 4,开启事务Transaction tx = session.beginTransaction();// 5,查询数据User user = (User) session.get(User.class, keys);if (user != null) {System.out.println(user.getAge() + ","+ user.getKeys().getAddress() + ","+ user.getKeys().getUserName());}tx.commit();// 7,关闭session.close();}}2)插入两条数据到数据库,数据库的user表
3)通过主键查询
25,江西南昌,bighuan
0 0
- Hibernate之复合主键映射
- hibernate复合主键映射
- Hibernate复合主键映射
- Hibernate复合主键映射
- Hibernate复合主键映射
- Hibernate复合主键映射
- Hibernate复合主键映射
- Hibernate复合主键映射
- Hibernate复合主键映射
- Hibernate复合主键映射
- hibernate 复合主键映射
- Hibernate复合主键映射
- Hibernate复合主键映射
- Hibernate复合主键映射
- hibernate复合主键映射
- Hibernate复合主键映射
- 【Hibernate】复合主键映射
- Hibernate复合主键映射
- Linux Shell——流程控制
- ASM转文件系统方法四种方法
- CoordinatorLayout高级用法-自定义Behavior
- RMAN-03014: implicit resync of r…
- 有用的ls命令
- Hibernate之复合主键映射
- Rfs[2]: no standby&nbs…
- 关于Thread cannot allo…
- centos7 搭建zabbix3.0.5监控系统
- 算法---快速排序算法
- TNS-00584: Valid node&…
- PHP 下载txt文件
- linux下用chmod改变文件权限
- 因/etc/fstab错误导致系统不能启动…