hibernate和mybatis一对一和一对多配置
来源:互联网 发布:c语言数据类型举例 编辑:程序博客网 时间:2024/05/18 03:25
Mybaitis/hibernate学习笔记
1 Mybatis一对一,一对多配置
(1)一对一配置
1、resultMap配置
<!--配置一对一 -->
<resultMap id="studentmap"type="student">
<idcolumn="sid"property="sid"[A1] ></id>
<resultcolumn="studentname"property="studentname"></result>
<association[A2] property="aClass"[A3] javaType[A4] ="class">
<idcolumn="cid"property="cid"></id>
<resultcolumn="classname"property="className"></result>
</association>
</resultMap>
2、主表添加属性
private ClassaClass;
3、写sql语句
<select id="findStudent"resultMap="studentmap">
select * FROM student,class WHERE student.cid=class.cid
</select>
(2)一对多配置
1、resultMap配置
<!--配置一多 -->
<resultMap id="classmap"type="class">
<idcolumn="cid"property="cid"></id>
<resultcolumn="className"property="className"></result>
<collection[A5] property="students"ofType="student"[A6] >
<idcolumn="sid"property="sid"></id>
<resultcolumn="studentname"property="studentname"></result>
</collection>
</resultMap>
2 Hibernate一对一,一对多配置
(1)一对多配置
注释@OneToMany的定义代码如下:
@Target({METHOD, FIELD}) @Retention(RUNTIME)
public@interface OneToMany {
Class targetEntity() defaultvoid.class;
CascadeType[] cascade() default {};
FetchType fetch() default LAZY;
String mappedBy() default "";
}
1、targetEntity属性表示默认关联的实体类型。如果集合类中指定了具体类型了,不需要使用targetEntity.否则要指定targetEntity=AddressEO.class。
2、mappedBy属性用于标记当实体之间是双向时使用。
3、CascadeType[]:级联属性
CascadeType.REFRESH:级联刷新,当多个用户同时作操作一个实体,为了用户取到的数据是实时的,在用实体中的数据之前就可以调用一下refresh()方法!
CascadeType.REMOVE:级联删除,当调用remove()方法删除Order实体时会先级联删除OrderItem的相关数据!
CascadeType.MERGE:级联更新,当调用了Merge()方法,如果Order中的数据改变了会相应的更新OrderItem中的数据,
CascadeType.ALL:包含以上所有级联属性。
4、FetchType加载方式
FetchType.LAZY:延迟加载
FetchType.EAGER:急加载
(2)一对一配置
@Target({METHOD,FIELD}) @Retention(RUNTIME)
public @interface OneToOne {
Class targetEntity() default void.class;
CascadeType[] cascade() default {};
FetchType fetch() default EAGER;
boolean optional() default true;
String mappedBy() default "";
}
1、targetEntity属性表示默认关联的实体类型,默认为当前标注的实体类;
2、cascade属性表示与此实体一对一关联的实体的联级样式类型。联级样式上当对实体进行操作时的策略。
说明:在定义关系时经常会涉及是否定义Cascade(级联处理)属性,担心造成负面影响.
·不定义,则对关系表不会产生任何影响
·CascadeType.PERSIST (级联新建)
·CascadeType.REMOVE (级联删除)
·CascadeType.REFRESH (级联刷新)
·CascadeType.MERGE (级联更新)中选择一个或多个。
·还有一个选择是使用CascadeType.ALL ,表示选择全部四项
3、fetch属性是该实体的加载方式,有两种:LAZY和EAGER。
4、optional属性表示关联的实体是否能够存在null值。默认为true,表示可以存在null值。如果为false,则要同时配合使用@JoinColumn标记。
5、mappedBy属性用于双向关联实体时,标注在不保存关系的实体中。
[A1]colum:数据库字段;property:属性
[A2]一对一关系配置从表为association
[A3]主表中匹配关联表的那个属性
[A4]一对一关系中 为javaType
配置 [A5]一对多关系为collection
[A6]一对多要为ofType
- hibernate和mybatis一对一和一对多配置
- Mybatis一对一和一对多配置
- Mybatis一对一和一对多
- Mybatis学习----一对一和一对多
- Mybatis的一对一和一对多
- myBatis 一对一 和一对多映射
- 转载MyBatis的一对一和一对多
- hibernate 注解 一对一和一对多
- Mybatis关联查询一对一和一对多的实现
- mybatis的一对多和一对一的关系
- Mybatis关联查询一对一和一对多的实现
- Mybatis关联查询一对一和一对多的实现
- Mybatis关联查询一对一和一对多的实现
- Mybatis关联查询一对一和一对多的实现
- Mybatis关联查询一对一和一对多的实现
- MyBatis学习笔记:一对一和一对多关联表查询
- mybatis 一对一与一对多collection和association的使用
- Hibernate关联关系配置(一对多、一对一、多对一和多对多)
- 数字三角形
- 关于VC中LineDDA函数的调用
- 高德地图显示
- 微信小程序实例--洗衣小程序开发经验分享
- cocos2d-x 的环境搭建
- hibernate和mybatis一对一和一对多配置
- jmeter---正则表达式
- day06
- 压缩算法——JPEG2000 编解码原理
- hdu6063-RXD and math
- 生成指定范围内的随机数
- R语言学习-交集和并集
- node环境中knockoutjs组件引入外部文件
- [Git]: 使用经验总结