mybatis的collection属性_安全带的使用方法和步骤

mybatis的collection属性_安全带的使用方法和步骤问题1==>n问题选项//问题实体类publicclassQuestion{ private Stringid;//ID private Stringcontent;//问题 private Stringtype;//问题类型1:单选,2:多选,3:问答 private Integersort;//排序 privateList<Questi…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

表关系: 问题表 1==>n 问题选项表,
需求: 查询问题时候,联查出来问题选项

//问题 实体类
public class Question { 
   
	private	String id; //ID
	private	String content; //问题
	private	String type; //问题类型 1:单选,2:多选,3:问答
	private	Integer sort; //排序
	private List<QuestionOption> options; //问题选项 *** 问题表里不需要有这个属性对应的字段
	//...
}
//问题选项 实体类
public class QuestionOption{ 
   
	private	String id; //ID
	private	String qid; //问题ID *** 问题选项表里需要有这个属性对应的字段
	private	String content; //选项
	private	Integer sort; //排序
	//...
}

方式一:

代码复用性高, 主表分页查询正确

QuestionMapper.xml

<mapper namespace="com.xxx.modules.xxx.mapper.QuestionMapper">

<resultMap id="BaseResultMap" type="com.xxx.modules.xxx.entity.Question" >
		<id column="id" property="id" jdbcType="VARCHAR" />
		<result column="content" property="content" jdbcType="VARCHAR" />
		<result column="type" property="type" jdbcType="VARCHAR" />
		<result column="sort" property="sort" jdbcType="INTEGER" />
		<collection property="options" javaType="java.util.ArrayList" ofType="com.xxx.modules.xxx.entity.QuestionOption" select="com.xxx.modules.xxx.mapper.QuestionOptionMapper.selectList" column="{qid=id,sort=sort}" />
		<!-- qid/sort是定义的变量名, id/sort是主表的字段id/sort, 先查出主表的结果, 然后主表记录数是几 就执行几次 collection 的select, javaType和ofType 写不写都行, select的值: 对应xml的namespace + 对应xml中的代码片段的id, column作为select语句的参数传入,如果只传一个参数id可以简写: column="id" -->
	</resultMap>

	<!-- 查询列表 -->
	<select id="selectList" resultMap="BaseResultMap">
        SELECT
        	pq.id, pq.content, pq.type, pq.sort
        FROM
        	question AS pq
        <where>  
        </where>
    </select>

QuestionOptionMapper.xml

<mapper namespace="com.xxx.modules.xxx.mapper.QuestionOptionMapper">

 <!-- 查询列表 -->
 <select id="selectList" resultType="QuestionOption">
     SELECT
     	pqo.id, pqo.content, pqo.sort
     FROM
     	question_option AS pqo
     <where>
     	pqo.qid = #{qid} <!-- 变量名 qid 对应上文的 qid -->
     	<!-- 如果上文中 collection只传一个参数column="id",只要类型匹配,在这里随便写个变量名就可以取到值 #{xyz} -->
     </where>
 </select>

方式二:

只需要执行一次sql查询, 主表分页查询不正确

QuestionMapper.xml

<mapper namespace="com.xxx.modules.xxx.mapper.QuestionMapper">

<resultMap id="BaseResultMap" type="com.xxx.modules.xxx.entity.Question" >
		<id column="id" property="id" jdbcType="VARCHAR" />
		<result column="content" property="content" jdbcType="VARCHAR" />
		<result column="type" property="type" jdbcType="VARCHAR" />
		<result column="sort" property="sort" jdbcType="INTEGER" />
		<collection property="options" javaType="java.util.ArrayList" ofType="com.xxx.modules.data.entity.QuestionOption">
			<id column="oid" property="id" jdbcType="VARCHAR" />
			<result column="ocontent" property="content" jdbcType="VARCHAR" />
			<result column="osort" property="sort" jdbcType="INTEGER" />
		</collection>
		<!-- 列的别名 oid,ocontent,osort , 起别名是因为主子表都有这几个字段 这里要写 ofType, javaType还是可以不写 -->
	</resultMap>

	<!-- 查询列表 -->
	<select id="selectList" resultMap="BaseResultMap">
        SELECT
        	pq.id, pq.content, pq.type, pq.sort
        	,pqo.id AS oid ,pqo.content AS ocontent ,pqo.sort AS osort <!-- 联查子表字段,起别名 -->
        FROM
        	question AS pq
        	LEFT JOIN question_option pqo ON pq.id = pqo.qid <!-- 联查子表 -->
        <where>  
        </where>
    </select>

注意: 主子表要查询出来的字段名重复,要起别名

参考博客

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/172112.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 混合开发hybrid原理_unity引擎开源吗

    混合开发hybrid原理_unity引擎开源吗首先,我们先来罗列一下当前市面上,移动端的各种开发方法1.NativeApp纯原生的app开发模式,android(Java)或者ios(Swift,Oc)优点:有最好的性能,有最好的体验缺点:开发和发布的成本极高,两端需要不同的技术人员来维护,原生开发人员非常的稀缺2.WebApp移动端运行在浏览器上的网站,我们一般称之为H5应用,就是泛指我们经常开发的spa,map页面语言:js,vue,react,angular等优点:1.开发和发布非常方便2.用户看到的页面,会随着开发人

    2022年9月22日
    1
  • vue的安装和使用_路由器怎么安装图解

    vue的安装和使用_路由器怎么安装图解前言Vue(读音/vjuː/,类似于view)是一套用于构建前后端分离的框架。刚开始是由国内优秀选手尤雨溪开发出来的,目前是全球“最”流行的前端框架。使用vue开发网页很简单,并且技术生态环境完善

    2022年8月7日
    7
  • 电路模电数电知识点总结(初步完成,后期进行小部分优化)[通俗易懂]

    电路模电数电知识点总结(初步完成,后期进行小部分优化)[通俗易懂]文章目录前言推荐的学习资料复习要点第一模块电路分析基础小知识点电位参考方向参考方向小练习电压的三种表达方式恒压源与恒流源特性比较电容电感无源元件小结理想受控源电路符号理想受控源的分类受控电源与独立电源的比较基尔霍夫定律一组概念基尔霍夫电流定律(KCL)基尔霍夫电压定律(KVL)列写方法:电阻的等效变换法化简方法电源的等效变换法理想电压源的串并联理想电流源的串并联电压源与电流源的相互转化输入电阻叠加原理前言本文针对《电工电子技术(第4版)》——徐淑华,此书进行简单知识总结。本文可能对快速回忆知识..

    2022年6月20日
    26
  • Echarts整合(前后端、数据库)

    Echarts整合(前后端、数据库)

    2021年11月12日
    40
  • jetbrains 激活码(注册激活)「建议收藏」

    (jetbrains 激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~14…

    2022年3月30日
    780
  • vim怎么搜索字符串_进行字符串查找

    vim怎么搜索字符串_进行字符串查找1. 命令模式下,输入:/字符串比如搜索user,输入/user按下回车之后,可以看到vim已经把光标移动到该字符处和高亮了匹配的字符串2. 查看下一个匹配,按下n(小写n)3. 跳转到上一个匹配,按下N(大写N)4. 搜索后,我们打开别的文件,发现也被高亮了,怎么关闭高亮?    命令模式下,输入:n

    2022年9月23日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号