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>