MyBatis (六)知识总结(部分)

这篇博客通过一些题来总结一下对应的知识点(选项为绿色的为正确选项)

mappers标签(映射配置)

1.通过resource加载单个映射文件

使用相对于类路径的资源:

    <!-- 加载映射文件 -->
    <mappers>
        <!-- 加载单个类路径下的映射文件 -->
        <mapper resource="cn/domarvel/entity/User.xml"></mapper>
        <mapper resource="cn/domarvel/dao/UserMapper.xml"></mapper>
    </mappers>

2.<mapper url=" " />

使用完全限定路径

<mapper url="file:///D:workspace_spingmvcmybatis_01configsqlmapUser.xml" />

3.<mapper class=" " />

使用mapper接口类路径

    <!-- 加载映射文件 -->
    <mappers>
        <!-- 使用类路径加载单个映射文件 -->
        <mapper url="cn.domarvel.dao.UserMapper"/>
    </mappers>

注意:此种方法要求mapper接口名称和mapper映射文件名称相同,且放在同一个目录中。并且还有一个前提是:使用的是mapper代理方法

4.<package name=""/>

自动批量加载指定包下的所有mapper接口配置文件

 <!-- 加载映射文件 -->
    <mappers>
        <!-- 自动批量加载指定包下的所有Mapper接口配置文件 -->
        <package name="cn.domarvel.dao"/>
    </mappers>

注意:此种方法要求mapper接口名称和mapper映射文件名称相同,且放在同一个目录中。并且还有一个前提是:使用的是mapper代理方法

 

这里的<![CDATA[]]>在Mybatis中含义

在使用mybatis 时我们sql是写在xml 映射文件中,如果写的sql中有一些特殊的字符的话,在解析xml文件的时候会被转义,但我们不希望他被转义,所以我们要使用<![CDATA[ ]]>来解决

<select id="allUserInfo" parameterType="java.util.HashMap" resultMap="userInfo1">  
  <![CDATA[  
  SELECT newsEdit,newsId, newstitle FROM shoppingGuide  WHERE 1=1  AND  newsday > #{startTime} AND newsday <= #{endTime}  
  ]]>  
  <if test="etidName!=''">  
   AND newsEdit=#{etidName}  
  </if>  
 </select>  

因为这里有 ">"  "<=" 特殊字符所以要使用 <![CDATA[   ]]> 来注释,但是有<if> 标签,所以把<if>等 放外面

至于D选项的错误是因为insert标签中将parameterType写成了resultType

嵌套查询(select) 方式才会产生n+1问题,嵌套查询,你执行了一个单独的 SQL 语句来获取结果列表(就是“+1”) ,对返回的每条记录,你执行了一个查询语句来为每个加载细节(就是“N”)。推荐使用关联的嵌套结果方式。

在mybaits中,setting的的配置参数如下(个别)

原文地址:https://www.cnblogs.com/my-123/p/8527696.html