Hibernate关联关系配置(一对多、一对一和多对多)

Posted by & filed under Uncategorized.

第一种关联关系:一对多(多对一) “一对多”是最普遍的映射关系,简单来讲就如消费者与订单的关系。 一对多:从消费者角的度来说一个消费者可以有多个订单,即为一对多。 多对一:从订单的角度来说多个订单可以对应一个消费者,即为多对一。 一对多关系在hbm文件中的配置信息: 消费者(一方):

订单(多方):

  “一对多”关联关系,Customer方对应多个Order方,所以Customer包含一个集合用于存储多个Order,Order包含一个Customer用于储存关联自己的Customer。 一对多关联关系有一种特例:自身一对多关联。例如: 自身一对多关联自身的hbm文件设置:

  外键存放父亲的主键。 第二种关联关系:多对多   多对多关系也很常见,例如学生与选修课之间的关系,一个学生可以选择多门选修课,而每个选修课又可以被多名学生选择。数据库中的多对多关联关系一般需采用中间表的方式处理,将多对多转化为两个一对多。 数据表间多对多关系如下图: 多对多关系在hbm文件中的配置信息: 学生:

课程:

  其实多对多就是两个一对多,它的配置没什么新奇的相对于一对多。在多对多的关系设计中,一般都会使用一个中间表将他们拆分成两个一对多。<set>标签中的”table”属性就是用于指定中间表的。中间表一般包含两个表的主键值,该表用于存储两表之间的关系。由于被拆成了两个一对多,中间表是多方,它是使用外键关联的,<key>是用于指定外键的,用于从中间表取出相应的数据。中间表每一行数据只包含了两个关系表的主键,要获取与自己关联的对象集合,还需要取出由外键所获得的记录中的另一个主键值,由它到对应的表中取出数据,填充到集合中。<many-to-many>中的”column”属性是用于指定按那一列的值获取对应的数据。   例如用course表来说,它与student表使用一个中间表student_course关联。如果要获取course记录对应的学生记录,首先需要使用外键”course_id”从student_course表中取得相应的数据,然后在取得的数据中使用”student_id”列的值,在student表中检索出相关的student数据。其实,为了便于理解,你可以在使用course表的使用就把中间表看成是student表,反之亦然。这样就可以使用一对多的思维来理解了,多方关联一方需要外键那么在本例子中就需要”course_id”来关。 第三种关联关系:一对一 一对一关系就球队与球队所在地之间的关系,一支球队仅有一个地址,而一个地区也仅有一支球队(貌似有点勉强,将就下吧)。数据表间一对一关系的表现有两种,一种是外键关联,一种是主键关联。图示如下: 一对一外键关联: 一对一主键关联:要求两个表的主键必须完全一致,通过两个表的主键建立关联关系: 一对一外键关联在hbm文件中的配置信息: 地址:

球队:

  一对一外键关联,其实可以看做是一对多的一种特殊形式,多方退化成一。多方退化成一只需要在<many-to-one>标签中设置”unique”=”true”。 一对一主键关联在hbm文件中的配置信息: 地址:

球队:

一对一主键关联,是让两张的主键值一样。要使两表的主键相同,只能一张表生成主键,另一张表参考主键。 <generator class=”foreign”>   <param name=”property”>adress</param> </generator> “class”=”foreign”就是设置team表的主键参照adress属性的主键值。 Read more […]

兼容ie[6-9]、火狐、Chrome、opera、maxthon3、360浏览器的js本地图片预览

Posted by & filed under Uncategorized.

html代码:

将网上的js本地图片预览整合了一下,希望对大家有用,如有其他浏览器不兼容且有解决办法,请给我留言,我将及时更新本文代码。 javascript代码:

SSH自定义分页标签

Posted by & filed under Uncategorized.

一、标签处理类:

二、标签库描述文件:

三、PropertyUtil工具类:

四、page.properties配置文件:

五、action方法:

七、Jsp页面配置 添加引用:

遍历查询结果集合:

查询条件回显:

添加分页条:

八、注意 该分页标签支持条件查询分页(需要将查询条件回显到jsp页面),点击分页条会对该条件进行分页显示。 原理:点击分页条时,标签会将JSP页面中的所有文本框和下拉列表框转化成form表单提交。 Read more […]

Js操作Select大全

Posted by & filed under Uncategorized.

判断select选项中 是否存在Value=”paraValue”的Item 向select选项中 加入一个Item 从select选项中 删除一个Item 删除select中选中的项 修改select选项中 value=”paraValue”的text为”paraText” 设置select中text=”paraText”的第一个Item为选中 设置select中value=”paraValue”的Item为选中 得到select的当前选中项的value 得到select的当前选中项的text 得到select的当前选中项的Index 清空select的项 js代码:

Read more […]

Hibernate使用MyExclipse10自动生成配置文件报错

Posted by & filed under Uncategorized.

使用MyExclipse10自动生成hibernate映射文件如下: 结果发现启动服务时报以下错误: 原因:因为hibernate换过项目地址,所以dtd文件的地址也换掉了。在hbm.xml文件里面把

换成

问题就解决了。 Read more […]

Spring声明式事务配置管理方法

Posted by & filed under Uncategorized.

环境配置 项目使用SSH架构,现在要添加Spring事务管理功能,针对当前环境,只需要添加Spring 2.0 AOP类库即可。添加方法: 点击项目右键->Build Path->Add librarys: 打开Add Libraries对话框,然后选定 MyEclipse Libraries: 点击Next,找到Spring 2.0 aop Libraries并勾选上,点击finsh即可。 如果在项目里面能看到下面的库文件,说明已经安装成功。 事务配置 首先在/WEB-INF/applicationContext.xml添加以下内容:

注:这是作为公共使用的事务管理器Bean。这个会是事先配置好的,不需各个模块各自去配。 下面就开始配置各个模块所必须的部分,在各自的applicationContext-XXX-beans.xml配置的对于事务管理的详细信息。 首先就是配置事务的传播特性,如下:

需要注意的地方: (1) Read more […]

JSON字符串与java对象的转换

Posted by & filed under Uncategorized.

所需的jar包: 

1. 把java 对象列表转换为json对象数组,并转为字符串

2.把java对象转换成json对象,并转化为字符串

3.把JSON字符串转换为JAVA 对象数组

4.把JSON字符串转换为JAVA 对象

Read more […]

Java导出Highcharts生成的图表为图片源码

Posted by & filed under Uncategorized.

需要的jar包: 需要的js文件:(可以通过http://www.highcharts.com/download下载highcharts对应的js文件) 下面是一些主要部分 web.xml

servlet部分

jsp

  项目源码可以通过点此下载 注意:请下载源码的同学,将源码中的

上面的注释去掉,程序是可以成功导出pdf的。 Read more […]

superMap地图覆盖物

Posted by & filed under Uncategorized.

我们把叠加到地图上标注、矢量图层元素、弹窗信息等内容统称为地图覆盖物。覆盖物拥有自己的地理坐标,会在地图浏览的过程中伴随着地图同时移动。当前支持的覆盖物有以下几种: Vector: 矢量元素覆盖物,配合Geometry和Style,可以以丰富的形式展示点、线、面等地理矢量图形,需要添加到Vector图层上显示。 Marker: 标签覆盖物,对地图上的点进行标准,可以自定义选择标注的图标,需添加到Markers图层上显示。 Popup: 信息窗口覆盖物,提供更灵活的信息展示能力,在弹窗中可以自定义信息的展示。 矢量图形覆盖物Vector 矢量图形覆盖物vector在定义的时候必须指明定对应的地理矢量图形Geometry。样式Style属性可选,如果指定则默认获取要素所在vector图层设置的style样式。 下面的示例定义一个点矢量图形覆盖物,没有设置样式,显示默认效果: //构造geometry对象 var Read more […]

ZTree学习之旅

Posted by & filed under Uncategorized.

后台代码: public static string DataTableToJson(string jsonName, DataTable dt, string BeforCatogory) { string Json = “”; Json = “[“; if (dt.Rows.Count > 0) { for (int i = 0; i < dt.Rows.Count; i++) { Json += “{“; //分类 if (BeforCatogory == “CgId”) { Json += @”id:’SoId%” + dt.Rows[i][“SoId”].ToString() + “|” + dt.Rows[i][“SoName”].ToString() + @”‘,”; Json += @”name:'” + dt.Rows[i][“SoName”].ToString() + @”‘,”; Json += @”url:”,”; Json += @”isParent:’true'”; } //分类 else if (BeforCatogory == “SoId”) { Json += @”id:’PrId%” + dt.Rows[i][“PrId”].ToString() + “|” + dt.Rows[i][“PrName”].ToString() + @”‘,”; Json += @”name:'” + dt.Rows[i][“PrName”].ToString() + @”‘,”; Json += @”url:”,”; Json += @”isParent:’false'”; } //分类 else { Json += @”id:’CgId%” Read more […]