mapper.xml中的全部代码

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hisoft.mapper.OrderMapper"><!-- 一对一查询 --><resultMap id="orderuser" type="Order" autoMapping="true"><id column="oid" property="id"/><association property="user" javaType="User" autoMapping="true"><id column="uid" property="id"/></association></resultMap><!-- 一对多查询 --><resultMap id="orderuserdetail" type="Order" autoMapping="true" extends="orderuser"><!-- <id column="id" property="id"/><association property="user" javaType="User" autoMapping="true"><id column="id" property="id"/></association> --><collection property="order" javaType="List" ofType="OrderShow" autoMapping="true"><id column="odid" property="id"/></collection></resultMap><!-- 多对多查询 --><resultMap id="orderuserdetailitem" type="Order" autoMapping="true" extends="orderuser"><!-- <id column="id" property="id"/><association property="user" javaType="User" autoMapping="true"><id column="id" property="id"/></association> --><collection property="order" javaType="list" ofType="OrderShow" autoMapping="true"><id column="odid" property="id"/><association property="item" javaType="Item" autoMapping="true"><id column="iid" property="id"/></association></collection></resultMap><select id="selectAllUserAndOrder" resultMap="orderuser">select u.id uid,u.user_name,u.password,u.name,u.age,u.sex,u.birthday,u.created,u.updated,o.idoid,o.user_id,o.order_number from tb_user u, tb_order o where u.id = o.user_id and u.id=#{id}</select><select id="selectUserOrderAndDetail" resultMap="orderuserdetail">selectu.id uid,u.user_name,u.password,u.name,u.age,u.sex,u.birthday,u.created,u.updated,o.idoid,o.user_id,o.order_number,od.id odid,od.order_id,od.item_id,od.total_price,od.statusfrom tb_user u,tb_order o,tb_orderdetail odwhere u.id = o.user_id and o.id = od.order_id and o.order_number = #{orderNumber}</select><select id="selectUserOrderDetailAndItem" resultMap="orderuserdetailitem">selectu.id uid,u.user_name,u.password,u.name,u.age,u.sex,u.birthday,u.created,u.updated,o.idoid,o.user_id,o.order_number,od.id odid,od.order_id,od.item_id,od.total_price,od.status,i.id iid,i.item_name,i.item_price,i.item_detailfrom tb_user u,tb_order o,tb_orderdetail od,tb_item iwhere u.id = o.user_id and o.id = od.order_id and i.id = od.item_id and o.order_number =#{orderNumber}</select></mapper>

select 标签中resultMap属性的值就是对应resultMap标签中id的值
resultMap 标签中 id表示唯一标识 type就是返回值类型 autoMapping="true"表示打开自动映射 ,extends表示继承某个标签的内容

order实体类
public class Order {private int id;private long userId;private String orderNumber;private User user;private List<OrderShow> order;}

association 中property属性的值是order实体类类中定义User类的变量名称user javaType就是User 表示类型
id标签中column属性的值表示数据库的字段名 property表示实体类的变量名
collection 标签中的property是指order实体类中的变量名order, javaType值order实体类中的List集合 ,ofType是指order实体类中List集合的泛型

注解

一对一查询注解
@Results({@Result(column = "sid",property = "sid"),@Result(column = "gid",property = "grade",one = @One(select="com.hisoft.dao.GradeMapper.selectGrade"))})@Select("select * from student")public List<Student> selectAllStudentAndGrade();

当通过学生信息查找对应班级信息的时候,就是一对一查找,因为一个学生只能对应一个班级,
@Results相当于resultMap标签 ,@Result相当于id标签 是对应匹配的意思

@Result(column = “gid”,property =“grade”,one=@One(select=“com.hisoft.dao.GradeMapper.selectGrade”)) })

因为是通过查询学生表的信息中的班级表的外键来查找对应的班级信息,所以这行代码中的column 的值是学生表的外键字段,property 的值表示传入参数的类型 ,也就是学生实体类中引入的班级类,com.hisoft.dao.GradeMapper.selectGrade这句代码的意识是引入这个路径下的sql语句,该路径下的内容为:

public interface GradeMapper {@Results({@Result(column = "grid",property = "grid"),@Result(column = "class",property = "gcalss")})@Select("select * from grade where grid = #{gid}")public Grade selectGrade();}
一对多注解 内容是通过班级查找学生信息,一个班级对应多个学生
@Results({@Result(column = "grid",property = "grid"),@Result(column = "class",property = "gcalss"),@Result(column = "grid",property = "list",many=@Many(select = "com.hisoft.dao.StudentMapper.selectAllStudent"))})@Select("select * from grade")public List<Grade> selectGradeAndStudent();

与一对一注解内容大致相同
com.hisoft.dao.StudentMapper.selectAllStudent路径下内容如下:

@Results({@Result(column = "sid",property = "sid")})@Select("select s.sid,s.sname,s.ssex,s.gid from student s where s.gid = #{grid}")public List<Student> selectAllStudent();

以下是各自实体类的内容:
学生实体类:

public class Student {int sid;String sname;String ssex;int gid;Grade grade;省略set/get/tosTring 无参构造 有参构造方法}

班级实体类:

public class Grade {int grid;String gcalss;List<Student> list;省略set/get/tosTring 无参构造 有参构造方法}

不管是一对一或者是一对多查询,查询的时候把要查询的后表的实体类放入到前表的实体类中,是最为合适并且容易记住的(个人理解),

mybatis高级查询相关推荐

  1. 2.4.3 Mybatis 高级查询, 复杂映射, 返回主键, 动态SQL if, set, foreach, 核心配置文件深入,plugins标签, 多表查询, 嵌套查询

    目录 Mybatis 复杂映射&配置文件深入 一 Mybatis高级查询 1.1 ResutlMap属性 1.2 多条件查询(三种) 1.3 模糊查询 二 Mybatis映射文件深入 2.1 ...

  2. mybatis高级查询,批量新增

    review sql脚本 实体类 sql watch out mapper mapper test 之前的比较分散,自己用... sql脚本 -- auto-generated definition ...

  3. order by 子查询_【框架】118:mybatis之多表高级查询

    今天是刘小爱自学Java的第118天. 感谢你的观看,谢谢你. 学习内容安排如下: 补充说明知识点:resultMap,sql片段. mybatis中的高级查询,即多表关联查询. 查询主要分为:一对一 ...

  4. java回顾:MyBatis参数、sql片段、动态sql、高级查询

    目录 一.MyBatis参数 SqlSessiong工具类 1.映射文件配置-入参 1.1 parameterType入参 1.2 单个入参,变量名任意定义: 1.3 多个入参,解决方案: 1.4 p ...

  5. MyBatis关联查询、多条件查询

    MyBatis关联查询.多条件查询 1.一对一查询 任务需求; 根据班级的信息查询出教师的相关信息 1.数据库表的设计 班级表: 教师表: 2.实体类的设计 班级表: public class Cla ...

  6. SpringBoot整合Mybatis(高级)

    SpringBoot整合Mybatis(高级) 文章目录 SpringBoot整合Mybatis(高级) 前言 基础环境配置 增删改查 ResultMap 复杂查询 多对一 一对多 动态SQL if ...

  7. MyBatis之查询缓存

    MyBatis之查询缓存 2017/09/30 正如大多数持久层框架一样,MyBatis同样也提供了对查询数据的缓存支持.今后我们要学习的SpringMVC框架属于系统控制层,它也有它的缓存区域,对响 ...

  8. 实现后台高级查询(中级版)

    初级版本的高级查询实现是没有问题的.然而,存在着一些你不尽人意的地方 问题1:拼接SQL依然麻烦,不爽! 问题2:使用了where1=1,降低性能 问题3:从责任分离上考虑,DAO是不应该做SQL拼接 ...

  9. 实现后台高级查询(基础版)

    1 高级查询基础版 操作步骤:1.建立高级查询表对象:XxxQuery/XxxQueryObject.(Xxx表示对象名称):ProductQueryObject(商品的高级查询对象),封装了商品高级 ...

最新文章

  1. php sendmail方法,PHP实现在windows下配置sendmail并通过mail()函数发送邮件的方法
  2. 轻雀世界知名体育用品零售商D的交流与思考
  3. Apache ServiceComb — Service Center
  4. HelloWorld 和相关设置
  5. 关于调用 Angular 属性指令 attribute Directive 是否需要带中括号的问题
  6. python 跳一跳辅助_微信跳一跳辅助自动跳Python
  7. EDAS投稿出现问题: notembedded: Upload failed: The font Helvetica is not embedded in the file
  8. 查看指定进程io状态的iotop命令
  9. linux ssh客户端乱码,Win10专业版下Open ssh客户端乱码咋办?
  10. 二、Nginx 反向代理配置初学个人理解
  11. UE 基础环境安装与Bridge插件配置
  12. circNet:人类环状RNA数据库
  13. LazyT——C#基础知识回顾
  14. userland免root运行linux,UserLAnd(GNU/Linux安装)
  15. 【NOIP2015模拟10.28B组】终章-剑之魂
  16. 天池大数据竞赛第一名,上海交通大学人工智能实验室如何用AI定位肺结节
  17. Novavax和武田宣布在日本合作Novavax的COVID-19候选疫苗
  18. 阿里云oss部署静态网页
  19. uefi怎么念_UEFI和Legacy的区别是什么,请尽量从原理上说明?
  20. Cell Ranger 细胞分群及差异分析

热门文章

  1. SAP SD模块调研问卷
  2. SAP IDOC开发
  3. Eclipse 部分快捷键
  4. 全球最难翻译的十大单词
  5. 腾讯阿里字节扎堆做公益,互联网技术也要“内卷”?
  6. 备受诟病的导购,不过是在替屈臣氏挡子弹
  7. python base64库介绍
  8. 关于Python中if、for、with、list、dict的练习题
  9. python list的一个面试题
  10. python 的String,集合(List,元组,Dict)