zoukankan      html  css  js  c++  java
  • Mybatis常见问题总结

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

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

    方式1、转义字符

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

    方式2、标记CDATA

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

    转义字符表

    转义符号
    &lt; <
    &gt; >
    &amp; &
    &apos;
    &quot;

    2、MyBatis中的resultType和resultMap

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

    使用resultType:

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

    使用resultMap:

     1 <resultMap type="com.liulanghan.Blog" id="BlogResult">    
     2     <id column="id" property="id"/>    
     3     <result column="title" property="title"/>    
     4     <result column="content" property="content"/>    
     5     <result column="owner" property="owner"/>    
     6 </resultMap>   
     7    
     8 <select id="selectBlog" parameterType="int" resultMap="BlogResult">    
     9       select * from t_blog where id = #{id}    
    10 </select>  

    3、参数

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

    参数判断和if的用法:

    1 <if test="queryDate != null">
    2     and queryDate &gt;= #{queryDate}
    3 </if>

    when otherwise就是if else

    1 <choose>
    2      <when test="isDelete != null and isDelete == 0">
    3           isDelete=0
    4       </when>
    5       <otherwise>
    6           isDelete=1
    7        </otherwise>
    8 </choose>

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

    1 <when test="gender != null and gender == 'MALE'">
    2     gender='MALE'
    3 </when>
  • 相关阅读:
    mysql 严格模式 Strict Mode
    PHP中NULL和‘'的区别
    nginx 出现413 Request Entity Too Large问题的解决方法
    mysql 转换NULL数据方法
    mysql大小写敏感配置
    mysql导入大批量数据出现MySQL server has gone away的解决方法
    mysql函数concat与group_concat使用说明
    Linux下aMule安装教程
    四、YOLO-V1原理与实现(you only look once)
    tf.cast(ndarray,dtype)
  • 原文地址:https://www.cnblogs.com/leanfish/p/9358450.html
Copyright © 2011-2022 走看看