Mybatis 之级联查询 一对多配置
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 之级联查询 一对多配置的更多相关文章
- mybatis ----  级联查询 一对多 (集合映射)
		
关联有嵌套查询和嵌套结果两种方式,本文是按照嵌套结果这种方式来说明的 上一章介绍了多对一的关系,用到了<association></association>,这是一个复杂类型的 ...
 - mybatis ----数据级联查询(多对一)
		
工程的目录结构: 有两个表,一个文章表article ,一个用户表user. create table article (id int(11) not null auto_increment, use ...
 - LayUI table表格控件 如何显示 对象中的属性(针对Mybatis的级联查询--一对一情况)
		
1.entity如下: 2.Mybatis的Mapper.xml文件如下 <resultMap id="BaseResultMapPlus" type="dicIt ...
 - mybatis关于级联查询结果集嵌套映射对象非列表的处理问题
		
工作中遇到这么一个问题,嵌套查询,返回json的时候,作为属性,deviceFields是一个device中的一个对象属性,在json返回的时候想要得到的应该是deviceFields:{ 具体属性} ...
 - Mybatis夺标关联查询一对多实例
		
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC " ...
 - Mybatis 级联查询 (一对多 )
		
后台系统中 涉及到添加试卷 问题 答案的一个模块的.我需要通过试卷 查询出所有的试题,以及试题的答案.这个主要要使用到Mybatis的级联查询. 通过试卷 查询出与该试卷相关的试题(一对多),查询出试 ...
 - Mybatis中使用级联查询,一对多的查询
		
一.需求描述 自己在开发一个小程序的过程中,需要做的一个查询是稍微比较复杂的查询,根据用户信息去查询用户所对应的宠物信息. 一个用户可能对应多个宠物,所以在用户和宠物信息的对应关系就是一对多的关系. ...
 - MyBatis之级联——一对多关系
		
上次我们讲到了MyBatis的一对一关系的表示,简单回顾一下一对一关系就是一个学生只有一个学生证.那么什么是一对多关系呢?一个学生有多个课程这就是一对多的关系.我们结合上一章中的学生和学生证,在此基础 ...
 - mybatis的一对一,一对多查询,延迟加载,缓存介绍
		
一对一查询 需求 查询订单信息关联查询用户信息 sql语句 /*通过orders关联查询用户使用user_id一个外键,只能关联查询出一条用户记录就可以使用内连接*/ SELECT orders.*, ...
 
随机推荐
- 暑假集训D11总结
			
%dalao 今天某学长来讲一个极其高深的数据结构——线段树(woc哪里高深了),然而并没有时间整理笔记= =,所以明天在扔笔记咯= = 考试 今天考试,一看数据范围,woc暴力分给的真足,然后高高兴 ...
 - [Tyvj模拟赛]运
			
运 题目 [问题背景]zhx 和妹子们玩数数游戏. [问题描述] 仅包含4或7的数被称为幸运数.一个序列的子序列被定义为从序列中删去若干个数, 剩下的数组成的新序列.两个子序列被定义为不同的当且仅当其 ...
 - Windows环境下安装scikit-learn
			
scikit-learn是Python的一个机器学习库,请按照以下步骤进行安装. 1.首先确保你的机器安装了Python并且配置好了环境变量. 2.安装pip 下载地址:https://pypi.py ...
 - Java面试容易容易出现的一些考点
			
考点内容是我个人的一点看法,不代表一定是这些,后面会慢慢继续补充 请写出final.finally.finalize的区别 1.final和finally都是关键字.而finalize是一个方法,是属 ...
 - kickstart自动化安装--tftp+nfs+dhcp
			
使用kickstart实现Centos 自动化安装 Kickstart自动化安装简介: 规模化:同时装配多台 服务器 自动化 :安装系统,配置各种服务 远程实现:不需要光盘,U盘等安装介质 优势: ( ...
 - /etc/shadow,/etc/passwd,/etc/shadow,/etc/passwd文件的内容解释
			
1.1 /etc/passwd文件内容格式 该目录存储的是操作系统用户信息,该文件为所有用户可见 用户名: 密码 : uid : gid :用户描述:主目录:登陆shell 举个 ...
 - Java中parse()和valueOf(),toString()的区别
			
1.parse()是SimpleDateFomat里面的方法,你说的应该是parseInt()或parsefloat()这种方法吧, 顾名思义 比如说parseInt()就是把String类型转化为i ...
 - 设计模式-前摄器模式(Proactor)
			
本周要进行boost asio库的学习,在学习之前发现最好需要先了解一下前摄器模式,这样对asio库的理解很有帮助,故写下此文 我之前写的随笔XShell的模拟实现中的链接方式可以说是同步的(服务器阻 ...
 - Python集合(set)类型的操作
			
python的set和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素. 集合对象还支持union(联合), intersection(交), difference(差)和 ...
 - 2017中国大学生程序设计竞赛 - 网络选拔赛 HDU 6155 Subsequence Count 矩阵快速幂
			
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6155 题意: 题解来自:http://www.cnblogs.com/iRedBean/p/73982 ...