MyBatis中<resultMap>的<association>和<collection>标签的使用

 MyBatis中<resultMap>的<association>和<collection>标签的使用

之前就用到了很多次,因为公司里架构设计表结构设计得很精细,一张表的映射注入往往不够,因此使用该标签来进行其他表字段的查询。下面是我的实体类,以及mapper.xml文件。

    1.实体类

package com.apin.modules.order.bean;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import org.json.JSONObject;
/**
 * @author wch
 * @date 2017年4月17日 
 */
public class ApinRoute implements Serializable{

private static final long serialVersionUID = 8605840659214346403L;
private  String id;//id
private  int adult_number;//成人人数
private  int child_number;//儿童人数
private  Date expire_time;//拼团关闭日期
private  String remark;//备注  
private  Byte route_type;//行程类型 1:单程2:往返3:多程  
private  Byte route_days;//往返天数  
private  Date create_time;//创建时间  
private  Byte route_status;//行程状态1:待出价2:已出价3:待付定金4:拼团待确认5:待付尾款6:待出票7:已出票8:已失效  
private  String application_id;//应用id 
private  String channel_id;//渠道id 
private  Byte is_by_hand;//是否是手工行程   0:不是1:是  
private  String user_id;//账号id
private  String phone;  
private  List<ApinRouteDetail> routeDetailList;  
}

比如说类中的phone,这个手机号是账号表中的一个字段,我现在写在这里;routeDetailList是我新建的一个list,泛型是另一个实体类,查询出来后可以直接存在这个list中;

2.mappe.XMl文件相关的代码段:

<resultMap id="result" type="com.apin.modules.order.bean.ApinRoute">
<id column="id" property="id" jdbcType="VARCHAR" />
<result column="adult_number" property="adult_number" jdbcType="INTEGER" />
<result column="child_number" property="child_number" jdbcType="INTEGER" />
<result column="remark" property="remark" jdbcType="VARCHAR" />
<result column="route_type" property="route_type" jdbcType="TINYINT" />
<result column="route_days" property="route_days" jdbcType="TINYINT" />
<result column="expire_time" property="expire_time" jdbcType="TIMESTAMP" />
<result column="create_time" property="create_time" jdbcType="TIMESTAMP" />
<result column="route_status" property="route_status" jdbcType="TINYINT" />
<result column="is_by_hand" property="is_by_hand" jdbcType="TINYINT" />
<result column="user_id" property="user_id" jdbcType="VARCHAR" />
<association column="user_id" property="phone" select="getphone" fetchType="eager"/>
<collection column="id" property="routeDetailList" javaType="ArrayList"

ofType="com.apin.modules.order.bean.ApinRouteDetail" fetchType="eager" select="selectRouteDetail"/>
</resultMap>

其中红色标签就是对此的使用,下面是使用到的查询详细代码段:

<select id="getphone" resultType="String">(resultType就是返回实体类中的类型)
select phone from apin_account  where id=#{user_id}
</select>
<select id="selectRouteDetail" resultType="com.apin.modules.order.bean.ApinRouteDetail" parameterType="String">

-----------------------------------------------------------------------------------parameterType是传过来的参数类型
select * from  apin_route_detail_info   where route_no=#{id}
</select>
<select id="searchOrder" resultMap="result">
select
apin_route.* 
from
apin_route,apin_plan_info
where apin_plan_info.plan_id=#{plan_id} and apin_plan_info.route_no=apin_route.id
<if test="map != null and map.size != 0">
order by
<foreach collection="map.keys" item="key" separator=",">
${key} ${map[key]}
</foreach>
</if>
</select>

到此为止,详细使用就写完了。

2. (单选题) MyBatis 中的 Mapper 接口是做什么用的? A 定义数据库表结构 B 定义 SQL 语句 C 定义事务管理 D 定义业务逻辑 3. (单选题) 在 MyBatis 中,哪个标签用于定义一条查询语句? A <select> B <insert> C <update> D <delete> 4. (单选题) MyBatis 支持的动态 SQL 元素不包括以下哪个? A <if> B <choose> C <when> D <for> 5. (单选题) MyBatis 中,哪个配置元素用于定义数据库连接信息? A <dataSource> B <transactionManager> C <environments> D <mappers> 6. (单选题) MyBatis 中,哪个配置元素用于定义结果映射? A <resultMap> B <parameterMap> C <sqlMap> D <mapper> 7. (单选题) MyBatis 中,哪个配置元素用于定义多个数据库环境? A <environments> B <dataSource> C <mappers> D <transactionManager> 8. (单选题) MyBatis 中,哪个配置元素用于定义 MyBatis 映射文件的位置? A <mappers> B <environments> C <dataSource> D <transactionManager> 9. (单选题) MyBatis 支持的结果集类型不包括以下哪个? A list B map C xml D array 10. (单选题) MyBatis 中,哪个配置元素用于定义 MyBatis 插件? A <plugins> B <environments> C <dataSource> D <mappers> 11. (单选题) MyBatis 支持的日志实现不包括以下哪个? A SLF4J B LOG4J C LOG4J2 D JULL 12. (单选题) MyBatis 中,哪个配置元素用于定义 MyBatis 的日志实现? A <settings> B <environments> C <dataSource> D <logImpl> 13. (单选题) MyBatis 中,哪个配置元素用于定义 MyBatis 属性文件的位置? A <properties> B <propertyFiles> C <configFile> D <settings> 14. (单选题) PageHelper 分页插件是通过什么机制来实现分页的? A 拦截器(Interceptor) B AOP C JDBC D XML 15. (单选题) MyBatisX 是一款基于哪个IDE的快速开发插件? A Eclipse B IntelliJ IDEA C NetBeans D Visual Studio Code 16. (单选题) 在 MyBatis 中,使用分页插件后,以下哪个操作会导致分页不生效? A 在查询之前调用 PageHelper.startPage(pageNum, pageSize); B 在查询之后调用 PageHelper.startPage(pageNum, pageSize); C 使用 PageInfo 对象封装查询结果 D 使用 Page 对象封装查询结果 17. (单选题) MyBatisX 插件的安装步骤中,以下哪个步骤不是必需的? A 在 IDEA 中安装 MybatisX 插件 B 在 pom.xml 文件中引入 MyBatis-Plus 依赖 C 在 application.yml 中配置数据库连接 D 在数据库中创建视图 18. (单选题) 在MyBatis的动态SQL中,<if> 标签的作用是什么? A 仅当指定条件为真时执行内部的SQL语句 B 无条件地执行内部的SQL语句 C 循环执行内部的SQL语句 D 将多个SQL语句合并为一个 19. (单选题) MyBatis中 <foreach> 标签collection 属性是用来遍历哪个类型的参数? A 单个值 B 数组 C 集合 D 映射 20. (单选题) 在MyBatis中,<set> 标签用于构建哪个SQL语句的部分? A SELECT B INSERT C UPDATE D DELETE 21. (单选题) 在MyBatis中,如果要实现多对一查询,通常使用哪个标签来定义结果映射? A <collection> B <association> C <result> D <sql> 22. (单选题) 当使用MyBatis进行一对多查询时,以下哪个标签用于定义结果映射中的集合属性? A <association> B <collection> C <result> D <sql> 23. (单选题) 在MyBatis中,如果要通过嵌套查询实现多表关联查询,通常需要在哪个标签中定义子查询? A <association> B <collection> C <resultMap> D <select> 24. (单选题) 在MyBatis中,如果要实现分页关联查询,通常会使用哪个插件来辅助实现? A PageHelper B MyBatisX C MyBatis-Spring D MyBatis-Plus 25. (单选题) MyBatis 允许在 XML 映射文件中使用哪种标签来包含其他 SQL 片段? A <include> B <import> C <file> D <sql>
10-18
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值