JSRUN 用代码说话

常见问题合集

编辑教程

常见问题合集

总结一些基础的常见的Mybatis问题,方便自己,方便读者学习,内容不多

大于号、小于号在 sql 语句中的转换  

  使用 mybatis 时 sql 语句是写在 xml 文件中,如果 sql 中有一些特殊的字符的话,比如< ,<=,>,>=等符号,会引起 xml 格式的错误,需要替换掉,或者不被转义。 有两种方法可以解决:转义字符和标记 CDATA 块。

转义字符

 <select id="searchByPrice" parameterType="Map" resultType="Product">
     <!-- 方式1、转义字符 -->
     select * from Product where price &gt;= #{minPrice} and price &lt;= #{maxPrice}
 </select>

标记 CDATA

 <select id="searchByPrice" parameterType="Map" resultType="Product">
   <!-- 方式2、CDATA -->
   <![CDATA[select * from Product where price >= #{minPrice} and price <= #{maxPrice} ]]>
 </select>

转义字符表

转义 符号
< <
> >
& &
'
"

MyBatis 中的 resultType 和 resultMap

网上的总结很多,简单而言,resultType 用于返回值只有一个字段的类型,resultMap 用于返回值有多个字段的类型。至于结果是 List 还是一个,则在 Mapper 中定义返回值是List还是单个。

使用 resultType:

 <select id="count" resultType="java.lang.Integer">  
         SELECT count(*) FROM USER  
 </select>

使用 resultMap:

 <resultMap type="com.liulanghan.Blog" id="BlogResult">    
     <id column="id" property="id"/>    
     <result column="title" property="title"/>    
     <result column="content" property="content"/>    
     <result column="owner" property="owner"/>    
 </resultMap>   

 <select id="selectBlog" parameterType="int" resultMap="BlogResult">    
select * from t_blog where id = #{id}    
</select>

参数

Mapper 中需要用 @Param("queryDate")定义参数名称,sql 中用#{queryDate}使用参数,字符串也不需要引号。

参数判断和if的用法:

<if test="queryDate != null">
    and queryDate >= #{queryDate}
</if>

when otherwise 就是 if else

<choose>
     <when test="isDelete != null and isDelete == 0">
          isDelete=0
      </when>
      <otherwise>
          isDelete=1
       </otherwise>
</choose>

如果要判断的字符串,则需要加引号

<when test="gender != null and gender == 'MALE'">
    gender='MALE'
</when>
JSRUN闪电教程系统是国内最先开创的教程维护系统, 所有工程师都可以参与共同维护的闪电教程,让知识的积累变得统一完整、自成体系。 大家可以一起参与进共编,让零散的知识点帮助更多的人。
X
支付宝
9.99
无法付款,请点击这里
金额: 0
备注:
转账时请填写正确的金额和备注信息,到账由人工处理,可能需要较长时间
如有疑问请联系QQ:565830900
正在生成二维码, 此过程可能需要15秒钟