MyBatis学习总结[3]-多表查询
来源:互联网 发布:opera linux 安装 编辑:程序博客网 时间:2024/06/05 02:41
一对一
方法一:嵌套查询语句
1.现在实体类里添加对应表的实体类
package me.model;import java.util.List;public class User { private int id; private String name; private String age; //对应表的实体类 private Car car; . . . getter,setter}
2.在对应的Mapper.xml文件的 resultMap 标签下添加 association 标签
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="me.dao.UserDao"> <resultMap type="User" id="User"> <id property="id" column="id"/> <result property="name" column="name"/> <result property="age" column="age"/> <!-- 对应表,select:另一条语句的id,column:根据主表的哪个属性来执行select --> <association property="car" column="id" select="getCar" /> </resultMap> <select id="selectById" parameterType="int" resultType="User"> select * from users where id = #{id} </select> <!-- 一对一 --> <!-- 嵌套语句 --> <select id="selectUser" resultMap="User"> select * from users </select> <select id="getCar" resultMap="Car"> select * from car where u_id=#{id} </select></mapper>
3.创建相关借口并调用,结果如下,
可见分成两条语句来执行。
方法二:嵌套结果
1.实体类
package me.model;public class Car { private int id; private String name; private String money; private int age; private int uId; <!-- 对应实体 --> private User user; . . . getter,setter}
2.Mapper
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="me.dao.UserDao"> <resultMap type="Car" id="Car"> <id property="id" column="id"/> <result property="name" column="name"/> <result property="money" column="money"/> <result property="age" column="age"/> <result property="uId" column="u_id"/> <!-- 嵌套结果 --> <association property="user" javaType="User"> <id property="id" column="u_id"/> <result property="name" column="u_name"/> <result property="age" column="u_age"/> </association> </resultMap> <!-- 当两张表里有相同字段时,要为相同字段取别名,否则同名字段只有一个不为空 --> <select id="selectCar" resultMap="Car"> select c.*, u.id as u_id, u.name as u_name, u.age as u_age from car c,users u where u.id=c.u_id </select> </mapper>
3.结果
一对多
方法一:嵌套查询语句
1.实体类
package me.model;import java.util.List;public class User { private int id; private String name; private String age; //对应表的实体类 private Car car; //对应多方的实体 private List<Dog> dogs; . . . getter,setter}
2.mapper
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="me.dao.UserDao"> <resultMap type="User" id="User"> <id property="id" column="id"/> <result property="name" column="name"/> <result property="age" column="age"/> <association property="car" column="id" select="getCar" /> <!-- 与一对一类似 --> <collection property="dogs" column="id" select="selectDogsWithUid"/> <resultMap type="Dog" id="Dog"> <id property="id" column="id"/> <result property="name" column="name"/> <result property="age" column="age"/> <result property="sex" column="sex"/> <result property="uId" column="u_id"/> </resultMap> <!-- 一对多 --> <!-- 嵌套语句 --> <select id="selectDogs" resultMap="User"> select * from users </select> <select id="selectDogsWithUid" resultMap="Dog"> select * from dogs where u_id=#{id} </select></mapper>
3.结果
方法二:嵌套结果
Mappeer
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="me.dao.UserDao"> <resultMap type="User" id="User"> <id property="id" column="id"/> <result property="name" column="name"/> <result property="age" column="age"/> <association property="car" column="id" select="getCar" /> <!-- 与一对一类似 --> <collection property="dogs" ofType="Dog"> <id property="id" column="d_id"/> <result property="name" column="d_name"/> <result property="age" column="d_age"/> <result property="sex" column="d_sex"/> <result property="uId" column="d_u_id"/> </collection> </resultMap> <!-- 嵌套结果 --> <select id="selectUserWithDog" resultMap="User"> select u.*, d.id as d_id, d.name as d_name, d.age as d_age, d.sex as d_sex, d.u_id as d_u_id from users u,dogs d where u.id=d.u_id; </select></mapper>
0 0
- MyBatis学习总结[3]-多表查询
- MyBatis学习总结(五)——实现关联表查询
- MyBatis学习总结(五)——实现关联表查询
- MyBatis学习总结(五)——实现关联表查询
- Mybatis学习总结之一对一关联表查询
- MyBatis学习总结(五)——实现关联表查询
- MyBatis学习总结(五)——实现关联表查询
- MyBatis学习总结(五)——实现关联表查询
- MyBatis学习总结(五)——实现关联表查询
- MyBatis学习总结(五)——实现关联表查询
- MyBatis学习总结(五)——实现关联表查询
- MyBatis学习总结(五)——实现关联表查询
- MyBatis学习总结(五)——实现关联表查询
- MyBatis学习总结(五)——实现关联表查询
- MyBatis学习总结(五)——实现关联表查询
- MyBatis学习总结(五)——实现关联表查询
- MyBatis学习总结(五)——实现关联表查询
- MyBatis学习总结——实现关联表查询
- HDU 1576 A/B
- Android 显示和隐藏软键盘
- 详解YUV
- iOS UIScrollView的使用及其不能滑动问题解决
- iOS真机调试
- MyBatis学习总结[3]-多表查询
- JAVA面试宝典7
- AngularJS之$window窗口对象
- java线程通信
- 程序员之路——一个老程序员对刚上大学的学弟学妹的忠告
- k8s源码分析-----kubelet启动流程分析(续)
- 论文笔记 A MultiPath Network for Object Detection
- android如何查看cpu的占用率和内存泄漏
- 二叉树的遍历之——Morris遍历