一.myBatis对象关系映射(多对一关系.一对多关系) 1.多对一关系: ---例子:多个员工同属于一个部门. (1)myBatis发送 额外SQL: ■ 案例:员工表通过 dept_id 关联 部门表,需求:查询指定员工id.name.所属的部门名称的信息. //部门对象的接口.映射文件省略,跟员工逻辑差不多 /* 员工对象的接口 */ public interface EmployeeMapper { Employee get(Long id); } <!--员工对象的映射文件--> &…
<set>.<list>集合上,可以取值:true/false/extra,(默认值为:true) 实例一:(集合上的lazy=true(默认))class默认lazy=true(默认) session = HibernateUtils.getSession(); tx = session.beginTransaction(); //不会发出SQL语句 Classes classes = (Classes)session.load(Classes.class, 1); //发出SQ…
Lazy(懒加载): 只有在正真使用该对象时,才会创建这个对象 Hibernate中的lazy(懒加载): 只有我们在正真使用时,它才会发出SQL语句,给我们去查询,如果不使用对象则不会发SQL语句进行查询. Hibernate中lazy(懒加载)的实现:          采用了第三方组件的库,这个库叫cglib.jar(比较流行),这个库对我们的类生成代理类(JDK的动态代理,只能对JDK中实现了接口的类进行代理),代理可以控制源对象并且可以对源对象的功能进行增强,而cglib.jar可以对…
一.多对一 多对一(或者一对多):在学生与老师的情况下,一个老师可以教多个学生,但一个学生只能被教一个老师教: 对于类:在多的那方拥有一的那方的一个实体 二.修改student.java和teacher.java类 复制03工程,并更名为Hibernate_04_ManyToOne: 在多的一方中添加@ManyToOne注解 package com.model; import javax.persistence.Embedded; import javax.persistence.Entity;…
懒加载的好处: 所谓懒加载(lazy)就是延时加载,延迟加载.什么时候用懒加载呢,我只能回答要用懒加载的时候就用懒加载.至于为什么要用懒加载呢,就是当我们要访问的数据量过大时,明显用缓存不太合适,因为内存容量有限 ,为了减少并发量,减少系统资源的消耗,我们让数据在需要的时候才进行加载,这时我们就用到了懒加载.总结为: 1> 不必将创建对象的代码全部写在viewDidLoad方法中,代码的可读性更强,层次感很强. 2> 每个属性的getter方法中分别负责各自的实例化处理,代码彼此之间的独立性强…
看了 mybatis 的教程,讲到关于mybatis 的懒加载的设置: 只需要在 mybatis 的配置文件中设置两个属性就可以了: <settings> <!-- 打开延迟加载的开关 --> <setting name="lazyLoadingEnabled" value="true" /> <!-- 将积极加载改为消息加载即按需加载 --> <setting name="aggressiveLazy…
映射(多.一)对一的关联关系 1)若只想得到关联对象的id属性,不用关联数据表 2)若希望得到关联对象的其他属性,要关联其数据表 举例: 员工与部门的映射关系为:多对一 1.创建表 员工表 确定其外键是部门表的 id DROP TABLE IF EXISTS emp; CREATE TABLE emp( id INT(11) NOT NULL PRIMARY KEY AUTO_INCREMENT, emp_name VARCHAR(255) DEFAULT NULL, gender CHAR(1…
一.单向和双向 包括一对一,一对多,多对多这三种情况,但是每一种又分为单向和双向,在hibernate中我们就详细解析过这单向和双向是啥意思,在这里,在重复一遍,就拿一对多这种关系来讲,比如有员工和部门,一个部门中有多个员工,从部门方看,是一对多关系,而多名员工属于一个部门,是多对一关系,那么如果我们的业务需求只需要通过部门查找到所有的员工,那么我们就只需要进行单向一对多的映射,如果我们需要通过员工来查询出对应的部门,那么我们就需要进行单向多对一的映射,而如果我们这两个业务需求都需要实现,也就是…
CascadeType.REMOVE 级联删除操作,删除当前实体时,与它有映射关系的实体也会跟着被删除.CascadeType.MERGE 级联更新(合并)操作,当Student中的数据改变,会相应地更新Course中的数据.CascadeType.DETACH 级联脱管/游离操作,如果你要删除一个实体,但是它有外键无法删除,你就需要这个级联权限了.它会撤销所有相关的外键关联.CascadeType.REFRESH 级联刷新操作,假设场景 有一个订单,订单里面关联了许多商品,这个订单可以被很多人…
本章我们讲如何通过懒加载来提高mybatis的查询效率. 本章所有代码:http://pan.baidu.com/s/1o8p2Drs 密码:trd6 1.需求:查询订单信息,有时候需要关联查出用户信息. 第一种方法:我们直接关联查询出所有订单和用户的信息 select * from orders o ,user u where o.user_id = u.id; 分析: ①.这里我们一次查询出所有的信息,需要什么信息的时候直接从查询的结果中筛选.但是如果订单和用户表都比较大的时候,这种关联查询…