当前位置: 首页 > news >正文

网站质量需求厦门律师网站建设

网站质量需求,厦门律师网站建设,百色seo快速排名,深圳画册设计排版目录 一、创建表结构 1. 学生表 (student) 2. 教师表 (teacher) 二、一对一 & 多对一 关系映射 1. 连表查询(直接查询) 2. 分步查询(懒加载) 三、一对多 关系映射 1. 直接查询 2. 分步查询 四、MyBatis 延迟加载&am…

目录

一、创建表结构

1. 学生表 (student)

2. 教师表 (teacher)

二、一对一 & 多对一 关系映射

1. 连表查询(直接查询)

2. 分步查询(懒加载)

三、一对多 关系映射

1. 直接查询

2. 分步查询

四、MyBatis 延迟加载(懒加载)

1. 配置全局懒加载

2. 配置分步查询的懒加载

3. 测试代码

4. 强制立即加载(eager)


一、创建表结构

在 MyBatis 进行关联映射时,我们需要创建 student(学生表)和 teacher(教师表),并建立它们之间的关联。

1. 学生表 (student)

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;DROP TABLE IF EXISTS `student`;
CREATE TABLE `student`  (`id` int(11) NOT NULL AUTO_INCREMENT,`Sname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,`sex` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,`age` int(11) DEFAULT NULL,`t_id` int(11) DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 11 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;INSERT INTO `student` VALUES (1, '张三', '男', 18, 1);
INSERT INTO `student` VALUES (2, '李四', '女', 18, 1);
...SET FOREIGN_KEY_CHECKS = 1;

2. 教师表 (teacher)

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;DROP TABLE IF EXISTS `teacher`;
CREATE TABLE `teacher`  (`id` int(11) NOT NULL AUTO_INCREMENT,`Tname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;INSERT INTO `teacher` VALUES (1, '张老师');
INSERT INTO `teacher` VALUES (2, '李老师');SET FOREIGN_KEY_CHECKS = 1;

二、一对一 & 多对一 关系映射

1. 连表查询(直接查询)

实体类
public class Student {private Integer id;private String Sname;private String sex;private Integer age;private Integer t_id;private Teacher teacher; // 关联的教师对象
}public class Teacher {private Integer id;private String Tname;
}
查询语句
<select id="getStudent1" resultMap="StudentTeacher1">SELECT student.id, student.Sname, teacher.TnameFROM studentLEFT JOIN teacher ON student.t_id = teacher.id
</select><resultMap id="StudentTeacher1" type="com.qcby.entity.Student"><result property="id" column="id"/><result property="Sname" column="Sname"/><association property="teacher" javaType="com.qcby.entity.Teacher"><result property="id" column="id"/><result property="Tname" column="Tname"/></association>
</resultMap>

2. 分步查询(懒加载)

<select id="getStudent" resultMap="StudentTeacher">SELECT * FROM student;
</select><resultMap id="StudentTeacher" type="com.qcby.entity.Student"><association property="teacher" column="t_id" javaType="com.qcby.entity.Teacher" select="getTeacher"/>
</resultMap><select id="getTeacher" resultType="com.qcby.entity.Teacher">SELECT * FROM teacher WHERE id = #{t_id};
</select>

三、一对多 关系映射

1. 直接查询

实体类
public class Teacher {private Integer id;private String Tname;private List<Student> students; // 一个老师有多个学生
}
查询语句
<select id="getTeacher" resultMap="TeacherStudent">SELECT teacher.id, teacher.Tname, student.SnameFROM teacherLEFT JOIN student ON student.t_id = teacher.id;
</select><resultMap id="TeacherStudent" type="com.qcby.entity.Teacher"><collection property="students" ofType="com.qcby.entity.Student"><result property="Sname" column="Sname"/></collection>
</resultMap>

2. 分步查询

<select id="getTeacher" resultMap="TeacherStudent2">SELECT * FROM teacher;
</select><resultMap id="TeacherStudent2" type="com.qcby.entity.Teacher"><collection property="students" column="id" ofType="com.qcby.entity.Student" select="getStudentByTeacherId" />
</resultMap><select id="getStudentByTeacherId" resultType="com.qcby.entity.Student">SELECT * FROM student WHERE t_id = #{t_id};
</select>

四、MyBatis 延迟加载(懒加载)

1. 配置全局懒加载

<settings><setting name="lazyLoadingEnabled" value="true"/><setting name="aggressiveLazyLoading" value="false"/>
</settings>

2. 配置分步查询的懒加载

<association property="teacher" column="t_id" javaType="com.qcby.entity.Teacher"select="com.qcby.dao.TeacherDao.getTeacher" fetchType="lazy"/>

3. 测试代码

@Test
public void getStudent() {List<Student> studentList = mapper.getStudent();for (Student student : studentList) {System.out.println(student.getSex());}
}@Test
public void getStudentWithTeacher() {List<Student> studentList = mapper.getStudent();for (Student student : studentList) {System.out.println(student.getTeacher().getTname());}
}

4. 强制立即加载(eager)

<association property="teacher" column="t_id" javaType="com.qcby.entity.Teacher"select="com.qcby.dao.TeacherDao.getTeacher" fetchType="eager"/>

五、总结

  • 一对一 & 多对一 可以使用 连表查询分步查询(懒加载)
  • 一对多 关系可以使用 结果嵌套查询嵌套
  • 懒加载 需要在 MyBatis 配置文件映射 XML 里配置。
  • 某些查询可以强制使用立即加载(eager),避免不必要的多次查询。

http://www.15wanjia.com/news/196636.html

相关文章:

  • 加强部门网站建设工作手机浏览器输入网址
  • 个人网站有哪些动画专业大学排名前十强
  • 网站是什么时候出现的电子烟网站建设
  • 音乐网站开发工具浙江网站建设商城价格
  • 网站备案抽查通过网站设计论文的题目
  • 专门卖电子产品的网站公司网站简介怎么做
  • 网站的首页设计电子商务网站建设的流程图
  • 酷炫html5网站网站建设用户量分析
  • 做网站哪个平台好江西网
  • 个人网站制作体会公司电子商务网站建设策划书
  • 网站管理系统开发的南山网站开发
  • 网站建设的定义mip 网站模板
  • 药品招采网站建设费用怎么创办一个网站
  • 网站结构 seo网站的费用多少合适
  • 青岛 制作网站 大点的公司郑州做网站哪家便宜
  • 十堰网站建设报价wordpress 用户前台
  • 一级a做爰片免费网站丶石家庄网站建设推广公司
  • 网上有做衣服的网站有哪些wordpress建一个网站吗
  • 有哪些做品牌特卖的网站大众团购网站怎么做
  • 网站建设常态化工作机制网站建设费缴税
  • 做站群一个网站多少钱怎么开发软件app软件
  • 外贸网站程序网站增值业务
  • 下模板做网站如何做好销售
  • icp备案系统网站品牌网站官网
  • seo方式包括网站优化可以做哪些优化
  • 郑州做网站推win2008 iis建网站
  • 网站建设Skype打不开医院官方网站建设
  • 重庆网站建设eyouc企业为什么做网站推广
  • 怎么制作微信购物网站网站开发与维护总结
  • 对于高校类建设网站的要求郑州妇科医院免费咨询