User.java, Role.java,address.java为三个类

public class User {

.....//user自己的属性
//association一对一
 private Role role;

//collection一对多
private List<Address> addressList;

}

//User的接口

//根据roleId获取用户列表assoction
public List<User> getUserListByRoleId(Role role);
//获取指定用户的地址列表collection
public User getAddressListByUserId(User user);

//sql

<!-- 根据roleId获取用户列表association start -->

<resultMap type="User" id="userMap">
<result property="id" column="id"/>
<result property="userCode" column="userCode"/>
<result property="userName" column="userName"/>
<!-- 方法一
<association property="role" javaType="Role">
<result property="id" column="r_id"/>
<result property="roleCode" column="roleCode"/>
<result property="roleName" column="roleName"/>
</association> -->
<!-- 方法二 -->
<association property="role" javaType="Role" resultMap="roleMap"></association>
</resultMap>
<resultMap type="Role" id="roleMap">
<result property="id" column="r_id"/>
<result property="roleCode" column="roleCode"/>
<result property="roleName" column="roleName"/>
</resultMap>
<select id="getUserListByRoleId" parameterType="Role" resultMap="userMap">
select u.*,r.id as r_id, r.roleName,r.roleCode from user u,role r
where u.roleId= r.id and r.id=#{id}
</select>
<!-- association end -->
<!-- 获取指定用户的地址列表collection 开始 -->
<resultMap type="User" id="searchMap">
<id property="id" column="userId"/>
<collection property="addressList" ofType="Address">
<!-- 此处id和result都可以 -->
<id property="id" column="a_id"/>
<result property="postCode" column="postCode"/>
<result property="addressContent" column="addressContent"/>
</collection>
</resultMap>
<select id="getAddressListByUserId" parameterType="User" resultMap="searchMap">
select *, a.id as a_id from user u,address a where u.id =a.userId and u.id=#{id}
</select>
<!-- collection end -->

为什么采用resultMap
1.resultMap仅用于联合查询并返回一个结果集,但属性名和数据库中的字段名不一致时
3.查询的属性结果集并不是都需要给用户

mybatis的动态sql中collection与assoction的更多相关文章

  1. mybatis在动态 SQL 中使用了参数作为变量,必须要用 @Param 注解

    如果在动态 SQL 中使用了参数作为变量,那么就要用 @Param 注解,即使你只有一个参数.如果我们在动态 SQL 中用到了 参数作为判断条件,那么也是一定要加 @Param 注解的,例如如下方法: ...

  2. mybatis中的.xml文件总结——mybatis的动态sql

    resultMap resultType可以指定pojo将查询结果映射为pojo,但需要pojo的属性名和sql查询的列名一致方可映射成功. 如果sql查询字段名和pojo的属性名不一致,可以通过re ...

  3. MyBatis动态SQL中trim标签的使用

    My Batis 官方文档 对 动态SQL中使用trim标签的场景及效果介绍比较少. 事实上trim标签有点类似于replace效果. trim 属性 prefix:前缀覆盖并增加其内容 suffix ...

  4. mybatis动态sql中的两个内置参数(_parameter和_databaseId)

    mybatis动态sql中的两个内置参数(_parameter和_databaseId)   <!-- mybatis动态sql的两个内置参数           不只是方法传递过来的参数可以被 ...

  5. mybatis动态sql中where标签的使用

    where标记的作用类似于动态sql中的set标记,他的作用主要是用来简化sql语句中where条件判断的书写的,如下所示: <select id="selectByParams&qu ...

  6. MyBatis的动态SQL详解

    MyBatis的动态SQL是基于OGNL表达式的,它可以帮助我们方便的在SQL语句中实现某些逻辑,本文详解mybatis的动态sql,需要的朋友可以参考下 MyBatis 的一个强大的特性之一通常是它 ...

  7. mybatis 使用动态SQL

    RoleMapper.java public interface RoleMapper { public void add(Role role); public void update(Role ro ...

  8. (转)mybatis:动态SQL

    概述:在mybatis中,动态语句是个非常强大和灵活的功能,并且动态语句可以放在sql的任何地方,利用该功能,我们可以写出非常灵活的代码.在mybatis的动态语句中常常可能会用到以下几个运算和逻辑判 ...

  9. MyBatis框架——动态SQL、缓存机制、逆向工程

    MyBatis框架--动态SQL.缓存机制.逆向工程 一.Dynamic SQL 为什么需要动态SQL?有时候需要根据实际传入的参数来动态的拼接SQL语句.最常用的就是:where和if标签 1.参考 ...

随机推荐

  1. 继续PHP

    2014-04-08 09:44:43 继续PHP. 邵杨继续回来 工作,安卓还是交给他.

  2. PLSQL的一些事儿

    每一个软件都是设计精妙的 plsql就可以使用一些简单代码代替长的语句,比如s=SELECT * FROM 数据插入报错: 原因: 一般情况下,数据库的NLS_CHARACTERSET 为AL32UT ...

  3. Sed替换 内容带反斜杠(/)

    sed "s#XXXX#${NAME}#" $MAIL_CONTENT > /tmp/MAIL_CONTENT1.tmp -----不论什么字符,紧跟着s命令的都被认为是新的 ...

  4. OSG开发概览(转载)

    OSG开发概览 1 OSG基础知识 Ø OSG是Open Scene Graphic 的缩写,OSG于1997年诞生于以为滑翔机爱好者之手,Don burns  为了对滑翔机的飞行进行模拟,对open ...

  5. HTML5定稿:手机App将三年内消失,互联网世界的第二次大战

    HTML5与app以对立竞争的产品形态展现在大众视野.从去年开始又有一大批技术派或者创业者盯向html5领域,移动游戏的爆发和微信朋友圈等众多平台为HTML5导流,能不能颠覆,或许只是时间上的问题. ...

  6. --@angularJS--指令与控制器之间的交互demo

    1.index.html: <!DOCTYPE HTML><html ng-app="app"><head>    <title>c ...

  7. Stanford机器学习课程之一——引言

    Andrew Ng的Machine Learning课程,在网易公开课上有中文版视频http://v.163.com/special/opencourse/machinelearning.html,六 ...

  8. Flash中图片的逐步加载

    在Flash中,有Loader类,可以从外部载入一张图片(或swf文件).但是有个不好的地方就是,不像浏览器那样一边下载一边显示.所幸的是,Flash提供了Loader.loadBytes方法和URL ...

  9. nmp install 异常

    由于网络的原因,需要多试几次才可以的: -g参数 不会安装在当前目录的:

  10. SQL,SP与ORM

    SQL译为按每一次情况的办理,SP意为存储过程,ORM就是对象-关系映射,比如Hibernate 一,演变  刚开始的时候,只有sql语句,即可以用交互模式一句一句执行, 也可以用批模式执行,多行sq ...