Mybatis级联 查询相对于hibenate是有点麻烦,但是相应好处也是有的,Mybatis轻量、根据自己要的字段配置方便

 

一对多配置用   <collection property="bean里面的对象集合" column="一对多的外键" select="一对多 中的‘多’ sql语句id"></collection>

多对一配置     <association property="user" javaType="User"> 配置需要的字段</association >

一对多配置

bean实体类

/**
* 用户信息表 bean
* @author flm
* @date 2017年7月27日
*/
public class UserBean implements Serializable{ private static final long serialVersionUID = 4581502828662200769L; private Integer id; //用户ID
private String loginName; //登录名称
private Integer sex; //性别
private String phone; //手机号码
private String address; //住址
private Integer u_identity;//身份 1 厂家 2 经销商 3用户
private Integer u_last_id; //上一级用户id
private String loginPwd; // 登录密码 public List<UserBean> userBeans =new ArrayList<UserBean>(); // userBeans List集合 应用于 一对多查询
// (本类比较特殊 一对多也是自己userBean) }

mapxml文件

<mapper namespace="com.ifengSearch.user.dao.UserDao">

    <!-- 结构Map配置 -->
<resultMap id="UserMap" type="com.ifengSearch.user.entity.UserBean" >
<id column="id" property="id" javaType="Integer" jdbcType="INTEGER" />
<result column="loginName" property="loginName" javaType="String" jdbcType="VARCHAR" />
<result column="sex" property="sex" javaType="Integer" jdbcType="INTEGER" />
<result column="phone" property="phone" javaType="String" jdbcType="VARCHAR" />
<result column="address" property="address" javaType="String" jdbcType="VARCHAR" />
<result column="u_identity" property="u_identity" javaType="Integer" jdbcType="INTEGER" />
<result column="u_last_id" property="u_last_id" javaType="Integer" jdbcType="INTEGER" />
<result column="loginPwd" property="loginPwd" javaType="String" jdbcType="VARCHAR" />
</resultMap> <!-- === userBean 一 对多查询关联 (本类比较特殊 一对多也是自己userBean) === -->
<resultMap id="getlist" type="com.ifengSearch.user.entity.UserBean" >
<!-- 实体类属性对应数据库的主键字段,不然主键会查不到 主键 id -->
<id property="id" column="id" javaType="Integer" jdbcType="INTEGER" /> <!-- 用collection标签 ,也是实体类属性要对应数据库字段 -->
<!-- userBeans 对应的是 userBean实体类配置的集合 column="id" 是对应主键一对多的关联的外键 -->
<!-- select="com.ifengSearch.user.dao.UserDao.getUser" getUser一对多查询的sql语句 id ‘多’查询userBeans查询集合 -->
<collection property="userBeans" column="id" select="com.ifengSearch.user.dao.UserDao.getUser">
</collection>
</resultMap> <!-- 根据 一对多 中的 ‘多’查询 userBeans查询集合 -->
<select id="getUser" resultMap="UserMap" parameterType="Integer">
select * from user_info where u_last_id = #{id};
</select>
<!-- getlist 一对多 中的‘一’ 查询 -->
<select id="selectAll" resultMap="getlist">
select * from user_info where id=#{id}
</select>

dao层调用

package com.ifengSearch.user.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository; import com.ifengSearch.user.entity.UserBean; /**
* 用户 dao层
* @author flm
* @date 2017年7月27日
*/ @Repository
public interface UserDao {
/**
* 一对多查询 user
* @return
*/
public List<UserBean> selectAll();

然后就可以获取到 一对多的集合了

多对一 相对应来说比较简单

直接配置就可以了

<resultMap id="resultUserOhter" type="Uother">
<id column="id" property="id" />
<result column="other" property="other" />
<association property="user" javaType="User">
<id column="id" property="id" />
<result column="name" property="name" />
<result column="info" property="info" />
</association>
</resultMap>
<select id="getUserOhters" parameterType="int" resultMap="resultUserOhter">
select
user.id,user.name,user.info,uother.id,uother.ohter from uother,user
where user.id=uother.user_id
</select>

也可以参考 http://www.cnblogs.com/hq233/p/6752335.html

Mybatis 之级联查询 一对多配置的更多相关文章

  1. mybatis ---- 级联查询 一对多 (集合映射)

    关联有嵌套查询和嵌套结果两种方式,本文是按照嵌套结果这种方式来说明的 上一章介绍了多对一的关系,用到了<association></association>,这是一个复杂类型的 ...

  2. mybatis ----数据级联查询(多对一)

    工程的目录结构: 有两个表,一个文章表article ,一个用户表user. create table article (id int(11) not null auto_increment, use ...

  3. LayUI table表格控件 如何显示 对象中的属性(针对Mybatis的级联查询--一对一情况)

    1.entity如下: 2.Mybatis的Mapper.xml文件如下 <resultMap id="BaseResultMapPlus" type="dicIt ...

  4. mybatis关于级联查询结果集嵌套映射对象非列表的处理问题

    工作中遇到这么一个问题,嵌套查询,返回json的时候,作为属性,deviceFields是一个device中的一个对象属性,在json返回的时候想要得到的应该是deviceFields:{ 具体属性} ...

  5. Mybatis夺标关联查询一对多实例

    <?xml version="1.0" encoding="UTF-8" ?>  <!DOCTYPE mapper PUBLIC " ...

  6. Mybatis 级联查询 (一对多 )

    后台系统中 涉及到添加试卷 问题 答案的一个模块的.我需要通过试卷 查询出所有的试题,以及试题的答案.这个主要要使用到Mybatis的级联查询. 通过试卷 查询出与该试卷相关的试题(一对多),查询出试 ...

  7. Mybatis中使用级联查询,一对多的查询

    一.需求描述 自己在开发一个小程序的过程中,需要做的一个查询是稍微比较复杂的查询,根据用户信息去查询用户所对应的宠物信息. 一个用户可能对应多个宠物,所以在用户和宠物信息的对应关系就是一对多的关系. ...

  8. MyBatis之级联——一对多关系

    上次我们讲到了MyBatis的一对一关系的表示,简单回顾一下一对一关系就是一个学生只有一个学生证.那么什么是一对多关系呢?一个学生有多个课程这就是一对多的关系.我们结合上一章中的学生和学生证,在此基础 ...

  9. mybatis的一对一,一对多查询,延迟加载,缓存介绍

    一对一查询 需求 查询订单信息关联查询用户信息 sql语句 /*通过orders关联查询用户使用user_id一个外键,只能关联查询出一条用户记录就可以使用内连接*/ SELECT orders.*, ...

随机推荐

  1. Nlpir Parser敏感词搜索灵玖语义技术应用

    近年来随着网络技术的飞速发展和用户的剧烈增长,网络传输数据量越来越大,网络用语越来越趋于多样化.如何快速的屏蔽用户的不当言论.过滤用户发表内容中的非法词汇已成为关键词匹配领域的一项重大难题. 目前主要 ...

  2. 【原创】08. easyui form控件,回调参数存在后缀 audio controls="controls" style="display: none;"></audio>

    版本: jQuery EasyUI 1.4.3 springmvc 3.2.6 谷歌浏览器,内核版本 chrome 56.0.2924.87 360急速浏览器,内核版本 chrome 50.0.266 ...

  3. Struts2漏洞解决

    如果你也正在使用Struts2作为web层框架做开发或者做公司的送检产品,然后被告知有各种各样的Struts2漏洞,那本篇博客值得你花时间来喽上一两眼. 前端时间抽空为公司做了新一代的送检产品,为了方 ...

  4. 如何发布自己的开源框架到CocoaPods【转】

    在开发过程中,经常会使用到第三框架,我们通过一个pod install命令,很方便的就将第三方框架加到我们自己的项目中. 如果我们也想将自己写的组件或库开源出去,让别人也可以通过pod install ...

  5. java解析xml汇总(转自倾城幻影-Java解析xml汇总,链接:http://www.cnblogs.com/jiugehuanying/archive/2012/01/12/2320058.html)

    [引言] 目前在Java中用于解析XML的技术很多,主流的有DOM.SAX.JDOM.DOM4j,下文主要介绍这4种解析XML文档技术的使用.优缺点及性能测试. [一.基础知识--扫盲] sax.do ...

  6. python--DenyHttp项目(1)--socket编程:服务器端进阶版socketServer

    在网上看到了SocketServer模块,于是Server端简化: #coding:utf-8 import socketserver class MyTCPHandler(socketserver. ...

  7. 使用我的编译器,下面的代码 int i=7; printf("%d\n", i++ * i++); 返回 49?不管按什么顺序计算, 难道不该打印出56吗?

    尽管后缀自加和后缀自减操作符 ++ 和 -- 在输出其旧值之后才会执行运算, 但这里的"之后"常常被误解.没有任何保证确保自增或自减会在输出变量原值之 后和对表达式的其它部分进行计 ...

  8. RabbitMQ --- Work Queues(工作队列)

    目录 RabbitMQ --- Hello Mr.Tua 前言 Work Queues 即工作队列,它表示一个 Producer 对应多个 Consumer,包括两种分发模式:轮循分发(Round-r ...

  9. CSharpGL(44)用ShadowMapping方式画物体的影子

    CSharpGL(44)用ShadowMapping方式画物体的影子 在(前文)已经实现了渲染到纹理(Render To Texture)的功能,在此基础上,本文记录画物体的影子的方式之一——shad ...

  10. css的一些问题

    background-size ie8不支持怎么解决? background-size这个属性是css3,新增的属性,现在很多浏览器已经支持了,但是IE系列的浏览器却没有支持,比如IE8,下面介绍下如 ...