Mybatis高级查询(一) 在开始高级查询之前我们先来认识几个新的标签 resultMap与resultType resultType:将查询结果按照sql列名pojo属性名一致性映射到pojo中 适用场合...:较为简单的映射关系 但是如果pojo中没有包括查询出来的列名,就需要增加列名对应的属性才可以完成映射,如果没有查询结果的特殊要求建议使用resultType. 1)基本类型:resultType=基本类型...:***它可以将查询到的复杂数据(比如查询到几个表中的数据)映射到一个结果集中;需要单独定义resultMap,实现有点麻烦,如果对结果有特殊的需求,使用resultMap可以将关联查询映射pojo的属性中...:将关联信息映射到哟个pojo对象中 适用场合:一个订单表中只有一个用户对象属性,可以使用该标签实现查询订单表的时候关联查询出订单的用户信息; collection: 作用:将关联查询信息映射到一个list...="映射到pojo对象的一个属性"/> <!
我在有的工程中看过这样的后端接口:直接将前端所需要的数据返回,不做任何包装。 这么做会有什么问题呢? 我们只能依据http code来响应后端的请求结果。...我通常在会对数据载体做如下分层 实体类型 描述 PO 持久化对象,实体属性与表字段一一对应,DAO层产生,在Service层被使用 BO 业务对象,聚合PO层数据,也可以多表关联数据查询聚合,内部会有属性的业务逻辑处理方法...我对DTO与VO的理解是他们是结果型数据,是业务逻辑处理后的产物。而Command是指令性数据,通过Command类型参数,经由BO层业务逻辑,将数据映射到PO层与数据库交互。...1.DDD结构划分 如果我们的项目是DDD结构的分层,POJO需要有一个显示的标识符表明当前的POJO是什么左右,比如聚合根我会定义一个实体实现这个接口AggregateRoot来表明当前实体是聚合根...从单一POJO庞大后混乱的数据结构出发,为大家介绍正确划分POJO职责。
另外如果resultMap 多层嵌套中有多个id,并且名字相同的话,查询的时候尽量给个别名会更好一些。 3.2 result 就是正常映射到pojo类的一个属性。...3.3 resultType: 作用:将查询结果按照sql列名pojo属性名一致性映射到pojo中。...场合:为了方便查询关联信息可以使用association将关联订单信息映射为用户对象的pojo属性中,比如:查询订单及关联用户信息。...使用resultType无法将查询结果映射到pojo对象的pojo属性中,根据对结果集查询遍历的需要选择使用resultType还是resultMap。...list属性中,这样的作的目的也是方便对查询结果集进行遍历查询。
resultMap 需要单独定义resultMap,实现有点麻烦,如果对查询结果有特殊要求,使用resultMap可以完成将关联查询映射POJO的属性中。...:将关联查询到多条记录映射到cn.itcast.mybatis.po.Orders哪个属性 ofType:指定映射到list集合属性中pojo的类型 -->...总结 resultMap使用association和collection完成一对一和一对多高级映射(对结果有特殊的映射要求)。 association:将关联查询信息映射到一个pojo对象中。...适用于为了方便查询关联信息可以使用association将关联订单信息映射为用户对象的pojo属性中,比如:查询订单及关联用户信息。...使用resultType无法将查询结果映射到pojo对象的pojo属性中,根据对结果集查询遍历的需要选择使用resultType还是resultMap。
resultMap:需要独立定义resultMap,实现有点麻烦,如果对查询结果有特殊的要求,使用resultMap可以完成将关联查询映射pojo的属性中。...property:将关联查询到多条记录映射到com.demo.po.Orders哪个属性 ofType:指定映射到lsit集合属性中pojo中的类型 --...1.4 resultMap 总结: resultType: 作用: 将查询按照结果sql列名pojo属性名一致性映射到pojo中。...使用resultType无法将查询结果映射到pojo对象的pojo属性中,根据对结果集查询遍历的需要选择使用 resultType还是resultMap。...collection将模块映射到模块list中, 将菜单列表映射到模块对象的菜单list属性中,这样做的目的也是方便对查询结果进行 遍历查询
resultType做SQL语句返回结果类型处理时,对于SQL语句查询出的字段在相应的pojo中必须有和它相同的字段对应,而resultType中的内容就是pojo在本项目中的位置。...-- 订单查询关联用户的resultMap 将整个查询的结果映射到cn.itcast.mybatis.po.Orders中 --> 查询关联用户的resultMap 将整个查询的结果映射到cn.itcast.mybatis.po.Orders中 --> 查询单个对象的信息 property:要将关联查询的用户信息映射到Orders中哪个属性 --> 将关联查询到多条记录映射到cn.itcast.mybatis.po.Orders哪个属性 ofType:指定映射到list集合属性中pojo的类型
-- 订单关联查询的resultMap 将整个结果映射到com.shi.POJO的Orders中 --> POJO.Orders" id="ordersUserResultMap...-- association:用于映射关联查询单个对象的信息 propety: 要将关联查选的用户信息映射到Orders中哪个属性 --> 查询用户的唯一标识 column:指定唯一标识用户信息的列 property:映射到user的哪个属性 --> <id column="user_id" property...-- 一个订单关联查询出来了多条明细,所以要使用collection进行映射 collection:对查询到多条记录映射到集合对象中去 property:将关联查询到的多条记录映射到该...orderdetailList属性中去 ofType:指定映射到list集合属性中pojo的类型 --> <collection property="orderdetailList
resultMap和resultType区别 resultType :指定输出结果的类型(pojo、简单类型、hashmap..),将sql查询结果映射为java对象 。...如果sql查询列名和最终要映射的pojo的属性名不一致,使用resultMap将列名和pojo的属性名做一个对应关系 (列名和属性名映射配置) 使用resultMap <resultMap id...这里写图片描述 ---- resultType和resultMap用法总结 resultType: 作用: 将查询结果按照sql列名pojo属性名一致性映射到pojo中。...场合: 常见一些明细记录的展示,将关联查询信息全部展示在页面时,此时可直接使用resultType将每一条记录映射到pojo中,在前端页面遍历list(list中是pojo)即可。...---- association: 作用: 将关联查询信息映射到一个pojo类中。 场合: 为了方便获取关联信息可以使用association将关联订单映射为pojo,比如:查询订单及关联用户信息。
resultMap 是 Mybatis 最强大的元素,它可以将查询到的复杂数据(比如查询到几个表中数据)映射到一个结果集当中。 resultMap 包含的元素: 的主键字段,或者可以为查询语句中的别名字段" jdbcType="字段类型" property="映射pojo对象的主键属性" /> 的一个字段(可以为任意表的一个字段...)" jdbcType="字段类型" property="映射到pojo对象的一个属性(须为type定义的pojo对象中的一个属性)"/> pojo的一个对象属性...,格式如下: 查询语句的字段参数" property="pojo对象中集合属性" ofType="集合属性中的pojo对象"select="嵌套的查询语句...类添加属性集合 一个商品会有一些属性,现在需要将查询出的商品属性添加到商品对象中,首先需要在原商品 pojo 类的基础上中添加属性的集合: /** * 属性集合 */ privateList
/index.html resultMap是Mybatis最强大的元素,它可以将查询到的复杂数据(比如查询到几个表中数据)映射到一个结果集当中。...映射到pojo对象的一个属性(须为type定义的pojo对象中的一个属性)"/> pojo的一个对象属性" javaType="pojo关联的pojo对象...> 如果collection标签是使用嵌套查询,格式如下: 查询语句的字段参数" property="pojo对象中集合属性" ofType="集合属性中的...类添加属性集合: 一个商品会有一些属性,现在需要将查询出的商品属性添加到商品对象中,首先需要在原商品pojo类的基础上中添加属性的集合: /** * 属性集合 */ private...=BIGINT}; 属性结果集映射: BasePlusResultMap包含了属性查询语句的Collection 所以通过下面的查询商品语句就可获得商品以及其包含的属性集合: select s.ID
resultMap:需要单独定义resultMap,实现有点麻烦,如果对查询结果有特殊的要求,使用resultMap可以完成将关联查询映射pojo的对象属性中。...6.3 多对多 需求:查询用户信息及用户购买的商品信息,要求将关联信息映射到主pojo的pojo属性中 ?...,将订单的明细映射到detailList 在Orderdetail中添加Items属性,将订单明细所对应的商品映射到Items UserMapper ?...6.4 总结 一对一:模型里面写模型(association) 一对多:模型里面写集合(collection) resultType:将查询结果按照sql列名pojo属性名一致性映射到pojo中。...resultMap:使用association和collection完成一对一和一对多高级映射(对结果有特殊的映射要求)。 association:将关联查询信息映射到一个pojo对象中。
resultType实现 resultType映射规则:sql查询出几条记录,只要保证sql列名和resulttype指定的pojo类型的属性一致,可以映射成功,sql查询出几条记录最终映射生成的List...实现 需求 主查询是订单信息,要将主查询订单信息映射到orders对象中,在orders中创建user属性,让关联查询出来的用户信息映射到orders对象中的user属性中。...最终查询出来的用户列表,用户信息映射到List中,用户创建的订单信息隐射到user中的List orders属性,订单下的明细映射到order对象中List orderdeils 属性,订单明细所对应的商品信息映射到...reusltMap,需求比如:将一个列表数据映射到pojo的list属性中采用resultmap。...如果仅仅是将查询列表简单映射为List方式,列表中每个pojo对应一条记录,采用resultType即可。
聚合管道是MongoDB中的一个数据处理框架,它允许我们对多个文档进行过滤、排序、转换和分组等操作,最终返回一个结果集。...聚合管道通常由以下几个阶段组成:$match:用于过滤数据,只返回符合条件的文档。$project:用于选择需要返回的字段。$group:用于将数据按照某个字段进行分组。...可以按照以下步骤进行操作:创建Java类:根据查询结果的数据结构,创建Java类来表示数据。...配置POJO映射:在Java类中使用注解来配置POJO映射,将Java类映射到MongoDB数据库中的集合。例如,可以使用@Document注解来指定集合的名称,使用@Field注解来指定字段名称等。...通过使用聚合管道和$lookup阶段,我们可以轻松地将多个集合中的数据进行联合查询,并获得所需的结果。
(2)输出pojo对象:参考笔记一 (3)输出pojo列表:参考笔记一 Ⅲ、resultMap resultType可以指定pojo将查询结果映射为pojo,但需要pojo的属性名和sql查询的列名一致方可映射成功...如果sql查询字段名和pojo的属性名不一致,可以通过resultMap将字段名和属性名作一个对应关系,resultMap实质上还需要将查询结果映射到pojo对象中。 ...resultMap可以实现将查询结果映射为复杂类型的pojo,比如在查询结果映射对象中包括pojo和list实现一对一查询和一对多查询。 Mapper.xml定义: ?...,将关联查询信息映射到pojo对象中。...表示关联查询结果集。 property="orders":关联查询的结果集存储在User对象的上哪个属性。 ofType="orders":指定关联查询的结果集中的对象类型即List中的对象类型。
2.4mapper.xml中statement的resultType指定输出结果的类型和mapper.java的方法返回值类型一致。...加载、、、 输入映射 parameterType:指定输入参数类型可以是简单类型、pojo、hashmap、、、 对于综合查询,建议parameterType使用包装的pojo,...输出映射 resultType: 查询到的列名和resultType指定的pojo的属性名一致,才能映射成功。...如果查询到的列名和resultType指定的pojo的属性名不一致时,通过resultMap配置列名和属性名之间的对于关系(映射关系),可以完成映射。...高级映射: 将关联查询的列映射到一个pojo的属性中。(一对一) 将关联查询的列映射到一个List中。
如果多个查询引用相同的注册表,则每个引用查询将被内联并执行多次,即注册表的结果将不会被共享。...2,将DataStream或DataSet注册为表 结果表的schema 取决于注册的DataStream或DataSet的数据类型。有关详细信息,请查看有关将数据类型映射到表模式的部分。...4.1 将表转换为DataStream 作为流式查询的结果的表将被动态地更新,即当新记录到达查询的输入流时,它会改变。因此,转换此动态查询的DataStream需要对表的更新进行编码。...1,原子类型 Flink将原始(Integer,Double,String)或通用类型(无法分析和分解的类型)视为原子类型。属性的类型是从原子类型推断的,必须指定属性的名称。...在这里记录了确定POJO的规则。将POJO DataStream或DataSet转换为Table而不指定字段名称时,将使用原始POJO字段的名称。
使用resultType进行输出映射,只有查询出来的列名和pojo中的属性名一致,该列才可以映射成功。...如果查询出来的列名和pojo的属性名不一致,通过定义一个resultMap对列名和pojo属性名之间作一个映射关系。...:将关联查询到多条记录映射到com.mybatis.po.Orders哪个属性 ofType:指定映射到list集合属性中pojo的类型 --> 查询出来的每一个属性都是放在一个对应的Map里面的,其中键是列名,值则是其对应的值。...所以其实MyBatis的每一个查询映射的返回类型都是ResultMap,只是当提供的返回类型属性是resultType的时候,MyBatis会自动把对应的值赋给resultType所指定对象的属性。
因为在parameterType中已经提供了属性所属的类,所以此时不需要写对象名 3)pojo包装对象 开发中通过pojo传递查询条件,查询条件是综合的查询条件,不仅包括用户查询条件还包括其他的查询条件...的作用是建立sql查询结果字段与实体属性的映射关系信息,将查询的结果集转换为java对象,方便进一步操作,即结果集中的列与Java对象中的属性对应起来并值填充进去 resultMap 属性全内容如下:...) jdbcType --> 字段类型 property --> 映射到pojo对象的一个属性(须为type定义的pojo对象中的一个属性) association标签 --> property --...,id和result都将一个列的值映射到一个简单的数据类型 的属性或字段。...,因此分页查询 的结果在折叠后总数会减少,所以无法保证分页结果数量正确。
目录 多对一 配置数据库 搭建环境测试 按查询嵌套处理 按结果嵌套处理 总结 一对多 实体类编写 按结果嵌套处理 按查询嵌套处理 总结 多对一 多对一关系:多个学生对应一个老师 配置数据库 数据库的设计...: 总结 按照查询进行嵌套处理就像SQL中的子查询 按照结果进行嵌套处理就像SQL中的联表查询 一对多 一对多: 一个老师拥有多个学生 如果对于老师这边,就是一个一对多的现象,即从一个老师下面拥有很多学生...JavaType和ofType都是用来指定对象类型的 JavaType是用来指定pojo中属性的类型 ofType指定的是映射到list...集合属性中pojo的类型。...JavaType和ofType都是用来指定对象类型的 JavaType是用来指定pojo中属性的类型 ofType指定的是映射到list集合属性中pojo的类型。
类型的对象,结果集自动映射到MyUser属性。...存储结果集 使用POJO存储结果集,可以自动映射,如果有比较复杂的映射或者级联查询,那就需要用到resultMap属性配置映射集合了。...在元素中,通常使用以下属性: property:指定映射到实体类的对象属性。 column:指定表中对应的字段(即查询返回的列名)。...javaType:指定映射到实体对象属性的类型。 select:指定引入嵌套查询的子SQL语句,该属性用于关联映射中的嵌套查询。...它返回的类型为 com.po.Idcard 这个POJO类,映射到 com.po.Person 这个POJO类的 card 属性(读者可以看看Person类的定义)。
领取专属 10元无门槛券
手把手带您无忧上云