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)& &
(2)< <
(3)> >
(4)" "
(5)' '
【3】like與 concat
like的使用通常離不開concact函數,具體示例如下:
<if test="content !=null and content!=''">
and content like concat('%', #{content},'%')
</if>