resultType: 作用: 将查询结果按照sql列名pojo属性名一致性映射到pojo中. 场合: 常见一些明细记录的展示,比如用户购买商品明细,将关联查询信息全部展示在页面时,此时可直接使用resultType将每一条记录映射到pojo中,在前端页面遍历list(list中是pojo)即可. resultMap: 使用association和collection完成一对一和一对多高级映射(对结果有特殊的映射要求). association: 作用: 将关联查询信息映射到一个pojo对象中.…
因为该案例比较典型,所以记录一下,恐后期有所疑问,以便用时便于会议. 案例典型在 关联关系典型 主表一张业务模板表 TABLE_NAME  COLUMN_NAME COMMENTS YMIT_BIZ_TMP    PK_ID   自增主键 YMIT_BIZ_TMP    BIZ_TMP_NM  业务模板名称 YMIT_BIZ_TMP    TRD_INF_ID  交易接口ID,与接口用例树关联 YMIT_BIZ_TMP    TRD_INF_NM  交易接口名称 YMIT_BIZ_TMP    …
一.输入映射和输出映射 1. parameterType(输入类型) 1.1 传递简单类型 <select id="getUserById" parameterType="int" resultType="com.cenobitor.pojo.User"> SELECT `id`,`username`,`birthday`,`sex`,`address` FROM `user` WHERE id = #{id} </select…
导包 总配置文件 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <properties res…
笔记要点出错分析与总结工程组织 1.定义接口 interface DepartmentMapper package com.dao; import com.bean.Department; public interface DepartmentMapper { public Department getDeptByIdStep(Integer id); //使用Collection,执行分步查询 } interface EmployeeMapperPlus package com.dao; im…
笔记要点 出错分析与总结 在全局配置中,映射dao包下的全部: <mapper> <package name="com.dao"/> </mappers> 工程组织 1.定义接口 package com.dao; import com.bean.*; public interface EmployeeMapperPlus { public Employee getEmpAndDept(Integer id);//关联查询 public Employe…
接下来介绍resultMap定义查询结果集,实现关联查询 1 首先在接口中定义操作的方法 public interface EmployeeMapperPlus { public Employee getEmpAndDept(Integer id); } 2在xml里进行配置 <!--第一种进行配置 联合查询:级联属性封装结果集 --> <resultMap type="com.atguigu.mybatis.bean.Employee" id="MyDif…
用mybaits 写一个关联查询 查询商品表关联商品规格表,并查询规格表中的数量.价格等,为了sql重用性,利用 association 节点 查询 结果并赋值报错 商品表的mapper文件为GooodsMapper.xml 规格表的mapper 文件为GoodsSpecificationsMapper.xml java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for m…
resultMap的n+1方式实现多表查询(多对一) 实体类 创建班级类(Clazz)和学生类(Student),并在Student中添加一个Clazz类型的属性,用于表示学生的班级信息. mapper层 提供studentMapper和ClazzMapper,studentMapper查询所有学生的信息,ClazzMapper根据 编号查询班级信息.再StudentMapper中使用<association>配置装配. <association> 用于关联一个对象 propert…
关联查询: 一个用户对应多个订单,一个订单只有一个用户 订单关联用户:两种方式 一:基于resultTYpe,一个与表关系一样的pojo实现 主表订单,从表用户 首先要有一个与关联查询表关系一样的pojo 在代理接口添加方法,配置代理映射 最后进行单元测试  二 : 基于resultMap(推荐,更符合面向对象思想) pojo:在订单类中放置用户类对象,并且提供对应的setget方法  在ResultMap中配置两表关系 基于resultMap配置关联查询的方法 单元测试:…
对于一对一,一对多的关联查询,Mybatis-Plus官方示例(mybatis-plus-sample-resultmap)在处理时,需要编写查询方法及配置resultMap,并且写SQL. 为了简化这种操作,可以自定义注解来简化.注解工具源码及jar包地址:https://github.com/dreamyoung/mprelation 注解工具使用公优缺点: 优点: 无需再写SQL及XML配置文件 无需在Service层及Mapper层写 getLinkById . selectLinkBy…
learn from:http://www.mybatis.org/mybatis-3/zh/sqlmap-xml.html#Result_Maps 关联查询 准备 关联结果查询(一对一) resultMap复用 集合(一对多) 3 关联查询 做查询之前,先修改几个配置.mapper.xml是在mybatis-config.xml中指定,那么我们每增加一个mapper都要增加一个配置,很麻烦.为了简化配置.需要将mapper接口和mapper.xml放到同一个文件下,并且接口和xml文件命名一致…
本章介绍Mybatis之表的关联查询 一对一关联 查询员工信息以及员工的部门信息 1.准备表employee员工表,department部门表 CREATE TABLE `employee` ( `id` ) NOT NULL AUTO_INCREMENT, `last_name` ) DEFAULT NULL, `gender` ) DEFAULT NULL, `email` ) DEFAULT NULL, `dept_id` ) DEFAULT NULL COMMENT '部门ID', PR…
一.背景介绍 了解一个sql语句的执行过程,了解一部分都做了什么,更有利于对sql进行优化,因为你知道它的每一个连接.where.分组.子查询是怎么运行的,都干了什么,才会知道怎么写是不合理的. 大致执行顺序: select[distinct] from join(如:left join) on where group by having union order by limit 二.数据表准备 1.创建表 DROP TABLE IF EXISTS student; CREATE TABLE `…
知识点:查询一个实体类,并查出这个类下面的集合 Employee.java实体类 package com.hand.mybatis.bean;public class Employee {    private Integer eId;    private String eName;    private Integer gender;    private String email;    private Department dept;        public Employee() {…
接上篇mybatis使用associaton进行分步查询 相关的类还是上篇中的类. 查询部门的时候将部门对应的所有员工信息也查询出来 DepartmentMapper.xml <!--嵌套结果集的方式,使用collection标签定义关联的集合类型的属性封装规则 --> <resultMap type="com.mybatis.bean.Department" id="MyDept"> <id column="did"…
_分步查询传递多列值&fetchType_discriminator鉴别器 笔记要点出错分析与总结 Department.java bean public class Department { private Integer id; private String departmentName; private List<Employee> emps; } DepartmentMapper.xml <?xml version="1.0" encoding=&qu…
笔记要点出错分析与总结 工程组织 1.定义接口 DepartmentMapper package com.dao; import com.bean.Department; public interface DepartmentMapper { public Department getDeptById(Integer id); } EmployeeMapperPlus package com.dao; import com.bean.*; public interface EmployeeMap…
一对一也就是 A 表的一条记录对应 B 表的一条记录,下面的测试数据中,从employee 表来看,一个员工对应一个部门,是一对一关系,如果从部门角度来看,则是一对多的关系,一个部门对应多个员工,本节主要研究一对一的关系. 数据表建立 新建数据表department,有两个字段,插入两条数据如下: id dept_name 1 CIA 2 FSB 新建数据表employee,有三个字段,其中dept_id是外键,关联department表的主键id.插入数据如下: id last_name de…
本文链接地址:mybatis关联查询基础----高级映射(一对一,一对多,多对多) 前言: 今日在工作中遇到了一个一对多分页查询的问题,主表一条记录对应关联表四条记录,关联分页查询后每页只显示三条记录,sql查询主表一条记录的时候,加上关联表后主表每一条记录都和关联表相对应,也就是说主表一条记录和关联表四条对应实际查出的是4条,怎么实现主表一条记录和关联表多条数据关联后查出后是一条信息呢?(下面一对多详解),所以想将关于mybatis多表查询的问题整理记录下来,希望大家多多补充指正. 0.首先是…
业务背景 根据客户id查询客户基本信息,以及客户存在的订单信息 两张数据表 客户表 订单表 实体类 客户实体类:Customer private Integer id; private String name; private Integer age; //封装存在的订单信息 List<Order> orders = new ArrayList<>(); 订单实体类:Order private Integer id; private String orderNumber; priv…
业务背景 根据订单id查询订单的信息,以及该订单所属的客户的基本信息(不包括该客户自己的订单信息) 两张数据表 客户表 订单表 实体类 客户实体类:Customer private Integer id; private String name; private Integer age; //封装客户存在的订单信息 List<Order> orders = new ArrayList<>(); 订单实体类:Order private Integer id; private Stri…
一.MYSQL约束 1.默认值约束,当字段没有插入值的时候,mysql自动给该字段分配默认值. 默认值的字段允许为空. 对默认值字段也可以插入null. CREATE TABLE STUDENT( ID INT, NAME ), ADDRESS ) DEFAULT '京口区' ); ,'张三'); ,'李四' ,NULL); 2.非空约束 CREATE TABLE STUDENT( ID INT, NAME ), GENDER ) NOT NULL ); 2.1非空字段必须赋值(错误显示) ,…
在很多Java EE项目中,Spring+MyBatis框架经常被用到,项目搭建在这里不再赘述,现在要将的是如何在项目中书写,增删改查的语句,如何操作数据库,以及后台如何获取数据,如何进行关联查询,以及MyBatis的分页问题. 首先先看看项目的架构,方便后边叙述. 这个项目中是一个Sping+MyBatis的完整demo(这边将页面没有展示.)这次的主题主要是后台数据处理逻辑.接下来为大家逐一介绍各个文件, org.config   Spring配置包括数据库的链接信息 org.control…
上一篇文章介绍了基于Mybatis对数据库的增.删.改.查.这一篇介绍下关联查询(join query). 三张表:user article blog 表的存储sql文件: /* Navicat MySQL Data Transfer Source Server : localhost Source Server Version : 50620 Source Host : localhost:3306 Source Database : mybatis Target Server Type :…
一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关系. 1 CREATE TABLE teacher( 2 t_id INT PRIMARY KEY AUTO_INCREMENT, 3 t_name VARCHAR(20) 4 ); 5 CREATE TABLE class( 6 c_id INT PRIMARY KEY AUTO_INCREMEN…
1使用resultType.ResultMap处理返回结果 处理返回结果 resultType:指定返回值结果的完全限定名,处理多表查询的结果. 多表查询需要定义vo封装查询的结果. 需求:查询部门和部门下对应的岗位 部门名称     岗位名称 办公室        职员 办公室        主人 1.1 建立Post的实体类 package org.guangsoft.entity; /** * 岗位的实体类 * @author guanghe */ public class Post {…
先说下问题产生的背景: 最近在做一个用到MyBatis的项目,其中有个业务涉及到关联查询,我是将两个查询分开来写的,即嵌套查询,个人感觉这样更方便重用: 关联的查询使用到了动态sql,在执行查询时就出现了如下错误:Caused by: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'id' in 'class java.lang.Integer' 因为出现了这个问题,…
注:这篇文章的代码有部分删减,不能直接使用,不过关键代码都存在  应用场景: 想用mybatis做关联查询,并且把查询出的数据自动组装成对象可以使用关联查询. 1.一对一实现 例如:一部小说,属于一个分类,查询小说的时候想同时查询出所属分类. 1)实体定义: public class Book { private static final long serialVersionUID = 1L; /** *小说ID */ private Integer bookId; /** *作者 */ pri…
在Mybatis中的管理表查询这里主要介绍的是一对一和一对多的关联查询的resultMap的管理配置查询,当然你也可以用包装类来实现.不过这里不说,做关联查询的步骤可以简单的总结为以下的几步: 1.分析出表和表之间的关联关系 2.Sql语句的写法 3.在实体类中把附表的信息添加到主查询表中 4.配置resulMap 配置你主要查询表的信息 配置你关联表的信息 这里我先给出几个表的字段和关系,以三张表为例(用户表:users,订单表:orders,订单详情表:orderDetail)大概字段如下:…