MyBatis实践总结

Mybatis中文官网地址:https://mybatis.org/mybatis-3/zh/index.html

在这里插入图片描述

【1】插入后将主键ID放回到对象中

MySQL数据库,SpringBoot+MyBatis。mapper.xml配置如下:

<insert id="insert" useGeneratedKeys="true" keyProperty="id" parameterType="com.jane.knowledge.entity.SysMoment">
    insert into tb_sys_moment (id, title, content, 
      object_id, field1, field2, 
      field3, field4, create_time, 
      update_time)
    values (#{id,jdbcType=BIGINT}, #{title,jdbcType=VARCHAR}, #{content,jdbcType=VARCHAR}, 
      #{objectId,jdbcType=BIGINT}, #{field1,jdbcType=VARCHAR}, #{field2,jdbcType=VARCHAR}, 
      #{field3,jdbcType=VARCHAR}, #{field4,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP}, 
      #{updateTime,jdbcType=TIMESTAMP})
  </insert>

效果如下:

插入后的sysMoment:SysMoment{id=5,  content='测试朋友圈', objectId=5, , createTime=Sat Nov 09 14:55:55 CST 2019}

主要核心思想:

//id为对象的主键对应属性名
useGeneratedKeys="true" keyProperty="id" 

【2】XML中使用CDATA

① 什么是CDATA

CDATA 是由XML定义的,跟Mybatis没啥关系。CDATA 指的是不由 XML 解析器进行解析的文本数据。被<![CDATA[]]>这个标记所包含的内容将表示为纯文本,比如<![CDATA[<]]>表示文本内容“<”。全名:character data<![CDATA[]]>表示xml解析器忽略解析,比使用转义字符更快。

sql中有一些特殊的字符,在解析xml文件的时候会被转义。使用CDATA可以避免此类情况。比如包含”<”、”>”、”&”等字符,最好把他们都放到CDATA中。

② mybatis的xml中使用

实例如下:

 <if test="queryParam.createTime != null">
      <![CDATA[AND create_time >= #{queryParam.createTime}]]>
  </if>

需要注意的是mybatis中的<if test=""></if>、<where></where>、<choose></choose>、<trim></trim> 等这些标签不能写到CDATA中。否则标签将不会被mybatis解析。

在XML中,需要转义的字符有: 
  (1)&  	&amp; 
  (2)<  	&lt; 
  (3)>  	&gt; 
  (4)" 	&quot; 
  (5)'  &apos; 

【3】like与 concat

like的使用通常离不开concact函数,具体示例如下:

<if test="content !=null and content!=''">
	and content like concat('%', #{content},'%')
</if>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章