• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Hibernate关联映射

mysql 搞代码 4年前 (2022-01-09) 35次浏览 已收录 0个评论

集合映射 开发流程: 需求分析/数据库设计、项目设计/ 编码/测试/实施部署上线/验收需求: 用户购买, 填写地址! // javabean设计 public class User { private int userId; private String userName; // 一个用户,对应的多个地址 private Set String addre

集合映射

<code>开发流程:    需求分析/数据库设计、项目设计/ 编码/测试/实施部署上线/验收需求:    用户购买, 填写地址!</code>
<code class=" hljs lasso"><span class="hljs-comment">// javabean设计</span><span class="hljs-keyword">public</span> class User {    <span class="hljs-keyword">private</span> int userId;    <span class="hljs-keyword">private</span> <span class="hljs-built_in">String</span> userName;    <span class="hljs-comment">// 一个用户,对应的多个地址</span>    <span class="hljs-keyword">private</span> <span class="hljs-built_in">Set</span><span class="hljs-subst"><</span><span class="hljs-built_in">String</span><span class="hljs-subst">></span> address;    <span class="hljs-keyword">private</span> <p style="color:transparent">本文来源gao!%daima.com搞$代*!码$网3</p><span class="hljs-built_in">List</span><span class="hljs-subst"><</span><span class="hljs-built_in">String</span><span class="hljs-subst">></span> addressList <span class="hljs-subst">=</span> <span class="hljs-literal">new</span> ArrayList<span class="hljs-subst"><</span><span class="hljs-built_in">String</span><span class="hljs-subst">></span>();     <span class="hljs-comment">//private String[] addressArray; // 映射方式和list一样     </span>    <span class="hljs-keyword">private</span> <span class="hljs-built_in">Map</span><span class="hljs-subst"><</span><span class="hljs-built_in">String</span>,<span class="hljs-built_in">String</span><span class="hljs-subst">></span> addressMap <span class="hljs-subst">=</span> <span class="hljs-literal">new</span> HashMap<span class="hljs-subst"><</span><span class="hljs-built_in">String</span>, <span class="hljs-built_in">String</span><span class="hljs-subst">></span>();}</code>
<code class=" hljs xml"><span class="hljs-comment"><!---ecms -ecms  映射文件 --></span><span class="hljs-pi"><?xml version="1.0"?></span><span class="hljs-doctype"></span><span class="hljs-tag"><<span class="hljs-title">hibernate-mapping</span> <span class="hljs-attribute">package</span>=<span class="hljs-value">"cn.itcast.a_collection"</span>></span>    <span class="hljs-tag"><<span class="hljs-title">class</span> <span class="hljs-attribute">name</span>=<span class="hljs-value">"User"</span> <span class="hljs-attribute">table</span>=<span class="hljs-value">"t_user"</span>></span>        <span class="hljs-tag"><<span class="hljs-title">id</span> <span class="hljs-attribute">name</span>=<span class="hljs-value">"userId"</span> <span class="hljs-attribute">column</span>=<span class="hljs-value">"id"</span>></span>            <span class="hljs-tag"><<span class="hljs-title">generator</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"native"</span>></span><span class="hljs-tag"></<span class="hljs-title">generator</span>></span>        <span class="hljs-tag"></<span class="hljs-title">id</span>></span>           <span class="hljs-tag"><<span class="hljs-title">property</span> <span class="hljs-attribute">name</span>=<span class="hljs-value">"userName"</span>></span><span class="hljs-tag"></<span class="hljs-title">property</span>></span>        <span class="hljs-comment"><!---ecms -ecms              set集合属性的映射                name 指定要映射的set集合的属性                table 集合属性要映射到的表                key  指定集合表(t_address)的外键字段                element 指定集合表的其他字段                    type 元素类型,一定要指定         --></span>         <span class="hljs-tag"><<span class="hljs-title">set</span> <span class="hljs-attribute">name</span>=<span class="hljs-value">"address"</span> <span class="hljs-attribute">table</span>=<span class="hljs-value">"t_address"</span>></span>            <span class="hljs-tag"><<span class="hljs-title">key</span> <span class="hljs-attribute">column</span>=<span class="hljs-value">"uid"</span>></span><span class="hljs-tag"></<span class="hljs-title">key</span>></span>            <span class="hljs-tag"><<span class="hljs-title">element</span> <span class="hljs-attribute">column</span>=<span class="hljs-value">"address"</span> <span class="hljs-attribute">type</span>=<span class="hljs-value">"string"</span>></span><span class="hljs-tag"></<span class="hljs-title">element</span>></span>         <span class="hljs-tag"></<span class="hljs-title">set</span>></span>         <span class="hljs-comment"><!---ecms -ecms              list集合映射                list-index  指定的是排序列的名称 (因为要保证list集合的有序)          --></span>          <span class="hljs-tag"><<span class="hljs-title">list</span> <span class="hljs-attribute">name</span>=<span class="hljs-value">"addressList"</span> <span class="hljs-attribute">table</span>=<span class="hljs-value">"t_addressList"</span>></span>              <span class="hljs-tag"><<span class="hljs-title">key</span> <span class="hljs-attribute">column</span>=<span class="hljs-value">"uid"</span>></span><span class="hljs-tag"></<span class="hljs-title">key</span>></span>              <span class="hljs-tag"><<span class="hljs-title">list-index</span> <span class="hljs-attribute">column</span>=<span class="hljs-value">"idx"</span>></span><span class="hljs-tag"></<span class="hljs-title">list-index</span>></span>              <span class="hljs-tag"><<span class="hljs-title">element</span> <span class="hljs-attribute">column</span>=<span class="hljs-value">"address"</span> <span class="hljs-attribute">type</span>=<span class="hljs-value">"string"</span>></span><span class="hljs-tag"></<span class="hljs-title">element</span>></span>          <span class="hljs-tag"></<span class="hljs-title">list</span>></span>          <span class="hljs-comment"><!---ecms -ecms              map集合的映射                key  指定外键字段                map-key 指定map的key                 element  指定map的value           --></span>          <span class="hljs-tag"><<span class="hljs-title">map</span> <span class="hljs-attribute">name</span>=<span class="hljs-value">"addressMap"</span> <span class="hljs-attribute">table</span>=<span class="hljs-value">"t_addressMap"</span>></span>            <span class="hljs-tag"><<span class="hljs-title">key</span> <span class="hljs-attribute">column</span>=<span class="hljs-value">"uid"</span>></span><span class="hljs-tag"></<span class="hljs-title">key</span>></span>            <span class="hljs-tag"><<span class="hljs-title">map-key</span> <span class="hljs-attribute">column</span>=<span class="hljs-value">"shortName"</span> <span class="hljs-attribute">type</span>=<span class="hljs-value">"string"</span> ></span><span class="hljs-tag"></<span class="hljs-title">map-key</span>></span>            <span class="hljs-tag"><<span class="hljs-title">element</span> <span class="hljs-attribute">column</span>=<span class="hljs-value">"address"</span> <span class="hljs-attribute">type</span>=<span class="hljs-value">"string"</span> ></span><span class="hljs-tag"></<span class="hljs-title">element</span>></span>          <span class="hljs-tag"></<span class="hljs-title">map</span>></span>             <span class="hljs-tag"></<span class="hljs-title">class</span>></span><span class="hljs-tag"></<span class="hljs-title">hibernate-mapping</span>></span></code>
<code class="language-java hljs ">    <span class="hljs-comment">// 测试程序</span>    <span class="hljs-comment">// 保存set</span>    <span class="hljs-annotation">@Test</span>    <span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">testSaveSet</span>() <span class="hljs-keyword">throws</span> Exception {        Session session = sf.openSession();        session.beginTransaction();        <span class="hljs-comment">//-- 保存</span>        Set addressSet = <span class="hljs-keyword">new</span> HashSet();        addressSet.add(<span class="hljs-string">"广州"</span>);        addressSet.add(<span class="hljs-string">"深圳"</span>);        <span class="hljs-comment">// 用户对象</span>        User user = <span class="hljs-keyword">new</span> User();        user.setUserName(<span class="hljs-string">"Jack"</span>);        user.setAddress(addressSet);        <span class="hljs-comment">// 保存</span>        session.save(user);        session.getTransaction().commit();        session.close();    }    <span class="hljs-comment">// 保存list/map</span>    <span class="hljs-annotation">@Test</span>    <span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">testSaveList</span>() <span class="hljs-keyword">throws</span> Exception {        Session session = sf.openSession();        session.beginTransaction();        User user = <span class="hljs-keyword">new</span> User();        user.setUserName(<span class="hljs-string">"Tom"</span>);<span class="hljs-comment">//      // 用户对象  --  list</span><span class="hljs-comment">//      user.getAddressList().add("广州");</span><span class="hljs-comment">//      user.getAddressList().add("深圳");</span><span class="hljs-comment">//      // 保存</span><span class="hljs-comment">//      session.save(user);</span>        <span class="hljs-comment">// 用户对象  --  Map</span>        user.getAddressMap().put(<span class="hljs-string">"A0001"</span>, <span class="hljs-string">"广州"</span>);        user.getAddressMap().put(<span class="hljs-string">"A0002"</span>, <span class="hljs-string">"深圳"</span>);        <span class="hljs-comment">// 保存</span>        session.save(user);        session.getTransaction().commit();        session.close();    }</code>
<code>问题:    集合映射,映射的集合元素,都是普通的类型, 能否为对象类型?</code>

关联映射

<code>需求1:    部门与员工          一个部门有多个员工;       【一对多】          多个员工,属于一个部门    【多对一】需求2:    项目与开发员工        一个项目,有多个开发人员!        一个开发人员,参与多个项目!   【多对多】</code>

多对一映射与一对多

<code>1. 需求:员工与部门2. 数据库:3. 设计javabean封装:4. 映射:</code>

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Hibernate关联映射
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址