Mybatis使用之查询详解

本文详细介绍了Mybatis的查询使用,包括SQL语句块的作用和实例,select标签属性,ResultMap配置,以及一对一、一对多、多对多关联查询的配置方法。此外,还涉及到了嵌套关联查询和缓存机制。
摘要由CSDN通过智能技术生成

Mybatis使用之查询详解

 

一:简介

 

        此篇主要知识点:

       1、sql语句块

       2、select标签属性

       3、ResultMap 标签配置

       4、一对一关联

       5、一对多关联

       6、多对多关联

       7、嵌套查询

 

二:SQL语句块

 

       2.1 作用

 

              SQL元素可以被用来定义可重用的SQL 代码段,可以包含在其他语句中。比如在项目中常常做的分页查询、分别需要两条SQL语句、一条是查询所有具体记录信息、另一条需要查询记录数、而两条语句的where条件是一样的。这种类似情况就可以使用SQL语句块来简化配置信息。

 

       2.2 实例


              2.2.1 SQL语句定义:

      

    <sql id="queryColumns"> id, username, password </sql>

              2.2.2 使用:

 

    <select id="queryAuthor" parameterType="int" resultType="author">
        SELECT
        <include refid="queryColumns"/>
        FROM author
        WHERE id = #{id}
    </select>

三:select标签属性

 

       3.1 标签属性集合:

<select

 id="selectPerson"

 parameterType="int"

 parameterMap="deprecated"

 resultType="hashmap"

 resultMap="personResultMap"

 flushCache="false"

 useCache="true"

 timeout="10000"

 fetchSize="256"

 statementType="PREPARED"

 resultSetType="FORWARD_ONLY">

       3.2具体意义:

 

              参见补充部分。

 

四:ResultMap 标签配置

 

       4.1 介绍

 

              resultMap 元素是MyBatis 中最重要最强大的元素。它就是让你远离90%的需要从结果集中取出数据的 JDBC 代码的那个东西, 而且在一些情形下允许你做一些 JDBC 不支持的事情。事实上, 编写相似于对复杂语句联合映射这些等同的代码, 也许可以跨过上千行的代码。 ResultMap 的设计就是简单语句不需要明确的结果映射,而很多复杂语句确实需要描述它们的关系。

 

       4.2 ResultMap 与ResultType的区别

 

              MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap。resultType是直接表示返回类型的,而resultMap则是对外部ResultMap的引用但是resultType跟resultMap不能同时存在。

在MyBatis进行查询映射的时候,其实查询出来的每一个属性都是放在一个对应的Map里面的,其中键是属性名,值则是其对应的值。当提供的返回类型属性是resultType的时候,MyBatis会将Map里面的键值对取出赋给resultType所指定的对象对应的属性。

所以其实MyBatis的每一个查询映射的返回类型都是ResultMap,只是当我们提供的返回类型属性是resultType的时候,MyBatis对自动的给我们把对应的值赋给resultType所指定对象的属性,而当我们提供的返回类型是resultMap的时候,Mybatis就会根据我们配置的信息做映射

 

       4.3 标签属性

   <resultMap id="resultMapId"

               type="JavaBean"

               autoMapping="false"

               extends=""/>

       4.4 标签体

 

              ResultMap的主要组成部分、并且标签体之间可以相互嵌套、来表示更复杂的JavaBean。具体的使用到对应的标签体再说明其作用与标签属性的配置及意义。

              下面是其标签体签名:

        <constructor>
            <idArg/>
            <arg/>
        </constructor>
        <id property="" column="" java
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值