Mybatis关联查询结果集对象嵌套的具体使用

在查询时经常出现一对多”的关系,所有会出现嵌套对象的情况,Mybatis在resultMap提供了collection标签,本文适合有一定Mybatis基础的读者查阅

数据模型WeixinActivity2018User.java

public class WeixinActivity2018User  implements Serializable{

    /** serialVersionUID*/
    private static final long serialVersionUID = -2740162776768956231L;

    private int id;
    private String nickname;  //昵称
    private String headurl;   //头像
    private String openid;    //微信用户OpenId
    private String unionid;
    private String phone;     //用户手机号
    private int count;        //积攒数
    private String createtime;//创建时间
    private String uptime;    //更新时间
    private List<WeixinActivity2018UserAssist> activity2018UserAssists;//点赞用户信息

数据模型WeixinActivity2018UserAssist.java

public class WeixinActivity2018UserAssist  implements Serializable{

    /** serialVersionUID*/
    private static final long serialVersionUID = -2740162776768956232L;

    private int aid;
    private int uid;
    private String nickname;
    private String headurl;
    private String openid;
    private String unionid;
    private String createtime;

WeixinActivity2018UserMapper.xml

  <resultMap id="BaseResultMap" type="com.lh.wx.model.WeixinActivity2018User">
    <id column="id" jdbcType="INTEGER" property="id" />
    <result column="openid" jdbcType="VARCHAR" property="openid" />
    <result column="unionid" jdbcType="VARCHAR" property="unionid" />
    <result column="phone" jdbcType="VARCHAR" property="phone" />
    <result column="nickname" jdbcType="VARCHAR" property="nickname" />
    <result column="headurl" jdbcType="VARCHAR" property="headurl" />
    <result column="count" jdbcType="INTEGER" property="count" />
    <result column="createtime" jdbcType="DATE" property="createtime" />
    <result column="uptime" jdbcType="DATE" property="uptime" />
    <collection  property="activity2018UserAssists"  ofType="com.lh.wx.model.WeixinActivity2018UserAssist">
            <id property="aid" column="aid" />
             <result column="uid" jdbcType="INTEGER" property="uid" />
            <result column="aopenid" jdbcType="VARCHAR" property="openid" />
            <result column="aunionid" jdbcType="VARCHAR" property="unionid" />
            <result column="anickname" jdbcType="VARCHAR" property="nickname" />
            <result column="aheadurl" jdbcType="VARCHAR" property="headurl" />
            <result column="acreatetime" jdbcType="DATE" property="createtime" />
    </collection>
  </resultMap>
  <sql id="Base_Column_List">
    openid,unionid,phone,nickname,headurl,count,createtime,uptime
  </sql>
  <insert id="insertActivity2018User"  useGeneratedKeys="true" keyProperty="id" parameterType="com.lh.wx.model.WeixinActivity2018User" >
    insert into t_weixin_activity_2018_user (openid,unionid,phone,nickname,headurl,createtime,uptime)
    values (
        #{openid,jdbcType=VARCHAR},#{unionid,jdbcType=VARCHAR},#{phone,jdbcType=VARCHAR}, #{nickname,jdbcType=VARCHAR}, #{headurl,jdbcType=VARCHAR},now(),now()
    )
  </insert>
    <select id="selectTalCount" resultType="java.lang.Integer"  parameterType="java.util.Map">
        SELECT  count(twau.id)
        from  t_weixin_activity_2018_user twau
        <if test="openid != '' and openid != null">
            and twau.openid = #{openid}
        </if>
        <if test="id != 0 and id != null">
            and twau.id = #{id}
        </if>
        <if test="phone != '' and phone != null">
            and twau.phone = #{phone}
        </if>
    </select>
    <select id="queryActivity2018User" parameterType="java.util.Map" resultMap="BaseResultMap" >
        SELECT 
         twau.id,twau.openid, twau.unionid, twau.phone, twau.nickname, twau.headurl, twau.count,date_format( twau.createtime, '%Y-%m-%d %H:%m:%s') as createtime,date_format( twau.uptime, '%Y-%m-%d %H:%m:%s') as uptime
        ,twaua.aid,twaua.uid,twaua.openid as aopenid,twaua.unionid as aunionid,twaua.nickname as anickname,twaua.headurl as aheadurl,date_format(twaua.createtime, '%Y-%m-%d %H:%m:%s') as acreatetime ,
        twaua.phone as aphone
        from  t_weixin_activity_2018_user twau LEFT  JOIN t_weixin_activity_2018_user_assist twaua on twau.id=twaua.uid  where 1=1
        <if test="openid != '' and openid != null">
            and twau.openid = #{openid}
        </if>
        <if test="id != 0 and id != null">
            and twau.id = #{id}
        </if>
        <if test="phone != '' and phone != null">
            and twau.phone = #{phone}
        </if>
        <if test="start != '' and start != null  and start != 0">
            order by tlb.createtime desc limit ${start}, ${number}
        </if>
  </select>

到此这篇关于Mybatis关联查询结果集对象嵌套的具体使用的文章就介绍到这了,更多相关Mybatis关联查询对象嵌套 内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Mybatis自关联查询一对多查询的实现示例

    注:代码已托管在GitHub上,地址是:https://github.com/Damaer/Mybatis-Learning ,项目是mybatis-13-oneself-one2many,需要自取,需要配置maven环境以及mysql环境(sql语句在resource下的test.sql中),觉得有用可以点个小星星. docsify文档地址在:https://damaer.github.io/Mybatis-Learning/#/ 所谓自关联查询,是指自己既然充当一方,又充当多方.比如新闻栏目

  • mybatis如何使用注解实现一对多关联查询

    mybatis 注解实现一对多关联查询 @Select("select id,mockexam_section as section,id as sectionId" + " from t_p_qb_mockexam_section" + " where mockexam_charpter_id = #{charpterId} and is_delete = 0" + " order by mockexam_section_idx as

  • 详解mybatis多对一关联查询的方式

    根据ID查询学生信息,要求该学生的教师和班级信息一并查出 第一种关联方式 1.修改实体类Student,追加关联属性,用于封装关联的数据 修改完以后重新生成get set方法还有toString方法 private Teacher teacher; private Classes classes; 2.修改TeacherMapper相关配置 1.接口类 增加 Teacher selectTeacherById(Integer tid); 2.xml映射文件 增加 <sql id="para

  • Mybatis多表关联查询的实现(DEMO)

    概要 本节要实现的是多表关联查询的简单demo.场景是根据id查询某商品分类信息,并展示该分类下的商品列表. 一.Mysql测试数据 新建表Category(商品分类)和Product(商品),并插入几条测试数据. create table Category ( Id int not null auto_increment, Name varchar(80) null, constraint pk_category primary key (Id) ); INSERT INTO category

  • 解决mybatis一对多关联查询多条数据只显示一条的问题

    一对多,如果多个表字段名相同,要记住使用别名,否则多条数据只显示一条 <resultMap type="com.example.demo.model.TuserModel" id="extendMapper"> <id column="id" property="id" /> <result column="user_name" property="userName&

  • MyBatis实践之动态SQL及关联查询

    序言 MyBatis,大家都知道,半自动的ORM框架,原来叫ibatis,后来好像是10年apache软件基金组织把它托管给了goole code,就重新命名了MyBatis,功能相对以前更强大了.它相对全自动的持久层框架Hibernate,更加灵活,更轻量级,这点我还是深有体会的. MyBatis的一个强大特性之一就是动态SQL能力了,能省去我们很多串联判断拼接SQL的痛苦,根据项目而定,在一定的场合下使用,能大大减少程序的代码量和复杂程度,不过还是不是过度太过复杂的使用,以免不利于后期的维护

  • MyBatis 三表外关联查询的实现(用户、角色、权限)

    一.数据库结构 二.查询所有数据记录(SQL语句) SQL语句: SELECT u.*, r.*, a.* FROM ( ( ( user u INNER JOIN user_role ur ON ur.user_id = u.user_id ) INNER JOIN role r ON r.role_id = ur.role_id ) INNER JOIN role_authority ra ON ra.role_id = r.role_id ) INNER JOIN authority a

  • MybatisPlus关联查询的完美实现方案

    目录 Mybatis-Plus 简介 连表?Left Join?Inner Join? 旧版代码 新版优化 相关工具类 总结 Mybatis-Plus 简介 什么是 MyBatis-Plus?Mybatis-Plus:为简化开发而生 MyBatis-Plus(简称 MP)是一个基于 MyBatis 的增强工具,它对 Mybatis 的基础功能进行了增强,但未做任何改变.使得我们可以可以在 Mybatis 开发的项目上直接进行升级为 Mybatis-plus,正如它对自己的定位,它能够帮助我们进一

  • Mybatis 一对多和多对一关联查询问题

    首先  数据库量表之间字段关系(没有主外键) studentmajor表的id字段对应student表里major字段 两个实体类 package com.model; import java.util.Date; public class Student { private Integer sno; private String sname; private String ssex; private Integer sclass; private StudentMajor studentmaj

  • Mybatis关联查询结果集对象嵌套的具体使用

    在查询时经常出现一对多”的关系,所有会出现嵌套对象的情况,Mybatis在resultMap提供了collection标签,本文适合有一定Mybatis基础的读者查阅 数据模型WeixinActivity2018User.java public class WeixinActivity2018User  implements Serializable{     /** serialVersionUID*/     private static final long serialVersionUI

  • Mybatis关联查询之一对多和多对一XML配置详解

    平时在开发过程中dao.bean和XML文件都是自动生成的,很少写XML的配置关系,今天记录一下mybatis的关联查询中的多对一和一对多的情况. 首先是有两张表(学生表Student和老师Teacher表,注:这里只是为了演示一对多和多对一的情况,请不要杠),为了更易懂,这里只设置了最简单的几个必要字段.表结构如下图 Student表: Teacher表: 创建实体bean Teacher.java: import java.util.List; public class Teacher {

  • mybatis主从表关联查询,返回对象带有集合属性解析

    目录 主从表关联查询,返回对象带有集合属性 VersionResult为接收返回数据对象 UpdateRecordEntity为从表数据 mapper.xml写法,这个是关键 sql查询语句 执行sql返回的数据 页面调取接口 mybatis关联查询(对象嵌套对象) 一种是用关联另一个resultMap的形式 一种联合查询(一对一)的实现 主从表关联查询,返回对象带有集合属性 昨天有同事让我帮着看一个问题,mybatis主从表联合查询,返回的对象封装集合属性.我先将出现的问题记录一下,然后再讲处

  • 实例讲解Java的MyBatis框架对MySQL中数据的关联查询

    mybatis 提供了高级的关联查询功能,可以很方便地将数据库获取的结果集映射到定义的Java Bean 中.下面通过一个实例,来展示一下Mybatis对于常见的一对多和多对一关系复杂映射是怎样处理的. 设计一个简单的博客系统,一个用户可以开多个博客,在博客中可以发表文章,允许发表评论,可以为文章加标签.博客系统主要有以下几张表构成: Author表:作者信息表,记录作者的信息,用户名和密码,邮箱等. Blog表   :  博客表,一个作者可以开多个博客,即Author和Blog的关系是一对多.

  • Mybatis表的关联查询详情

    目录 导语 什么时候用<resultMap>标签映射 什么时候用<association>&<collection> Mybatis表的关联查询 一对多查询 多对一查询 一对一查询 多对多查询 导语 关于<resultMap>标签映射,<association>&<collection>的使用 什么时候用<resultMap>标签映射 1.当我们查询结果的返回值是由对象封装的且对象中封装了另一个对象时,用标

  • springboot使用mybatis一对多的关联查询问题记录

    springboot使用mybatis一对多的关联查询 由于刚开始写java不久,对sql语句的熟悉度还是不够熟练,虽然现在使用的mybatisPlus比较多,但我始终觉得sql不能忘也不能不用,刚好最近有个需求需要做到关联的查询,时间也算充足,所以用sql来写,于是踩了很久坑,终于跳出来了,小小记录一下. 一对多 # 我这里是一对多查询,一张主表两张副表,最后还要有一张VO表(就是做关联映射用的),主表和副表的实体我就不贴了,以下是VO实体 这是我的controller @RequestMap

  • 关于mybatis一对一查询一对多查询遇到的问题

    springboot整合mybatis项目博客系统文章,相册,评论,标签,等表IDEA为最新版2021.3.3,mysql数据库为最新版Navicat(或许有些字段不支持特定的命名) 也是醉了,以前idea还是19版的,navicat也是老版本的时候mybatis关联查询mapper操作能正常运行,拿到相应字段,并封装,但最近写项目过程中遇到一个离谱的是,过了好久才发现, 当关联查询时,无论一对一还是一对多除了需要注意javaType和ofType之外,还应该注意各表主键不能同一名称 实体类文章

  • MybatisPlus实现对象嵌套关联查询一对多List集合查询

    目录 对象嵌套关联查询一对多List集合查询 mybatis嵌套关联查询如下 一对多查询(经典案例) 条件 数据库 代码实现 对象嵌套关联查询一对多List集合查询 mybatis嵌套关联查询如下 由于我的是一对集合查询,所以我有两个类. @Data @TableName("tb_user") public class User {     @TableId(type= IdType.INPUT)     private String id;     @TableField("

随机推荐