Mybatis开发遇到问题汇总

1.mybatis 中![CDATA[...]]

在今天使用Mybatis的xml文件中写sql语句时写入了一些特殊字符 如 < > & 等,但解析xml文件的时候会被转义,事实上并不但愿它被转义,可使用<![CDATA[ ]]>. 这是XML语法,在CDATA内部的全部内容都会被解析器忽略. 可是所以会致使<if test=""></if> <where></where> <choose></choose> <trim></trim>等标签自己功能失效,因此使用时把带有特殊字符的语句或字符自己放在<![CDATA[ ]]>内便可,即尽可能精确其做用范围.
也就是当你在使用有<if test=""></if> <where></where> <choose></choose> <trim></trim>的标签中使用 < > & 等特殊字符的时候,会出现xml语法错误,须要使用<![CDATA[ ]]>将 < > & 等特殊字符被解析器忽略,正确书写:sql

<select id="findChannelAlarmPage" resultType="DVBSChannelAlarmModel">
		select * from dvbs_channel_alarm_tab where 1=1
		<if test="queryMap.end_date != null">
			<![CDATA[
			and	check_time <= #{queryMap.end_date}
			]]>			
		</if>
</select>

2.bind 标签

bind 标签可使用 OGNL 表达式建立一个变量井将其绑定到上下文中。在前面的例子中, 
UserMapper.xml 有一个 selectByUser 方法,这个方法用到了 like 查询条件,部分代码以下 。数据库

<if test=” userNarne != null and userNarne ! = ””>
and user name like concat ( ’ 毛 ’, #{ userNarne },’ 毡 ’ )
</if>

使用 con cat 函数链接字符串,在 MySQL 中,这个函数支持多个参数,但在 Oracle 中只 
支持两个参数。因为不 同数据库之间的语法差别 ,若是更换数据库,有些 SQL 语句可能就须要 
重写。针对这种状况,可 以使用 bind 标签来避免因为更换数据库带来的一些麻烦。将上面的 
方法改成 bind 方式后,代码以下。mybatis

<if test=” userNarne != null and userNarne !=””>
<bind narne= " userNarneLike ” value = ”’ 草 ’+ userNarne + ’ 每 ’” / 〉
and user name like #{userNarneLike}
</if>

bind 标签的两个属性都是必选项, name 为绑定到上下文的变量名, value 为 OGNL 表 
达式。建立一个 bind 标签的变量后 , 就能够在下面直接使用,使用 bind 拼接字符串不只可 
以免因更换数据库而修改 SQL,也能预防 SQL 注入。app

3.mybatis的存储过程

4.mybatis鉴别器

一、概述:函数

鉴别器在于肯定使用那个ResultMap来映射SQL查询语句,在实现中咱们每每有一个基类,而后能够派生一些类。好比咱们要选择一群人能够用List<Person>,然而Person里面有个性别sex,根据它还能够分为Male或者Female。鉴别器就要根据sex决定用Male仍是用Female相关的Mapper进行映射。spa

这些话仍是很抽象,不过提及鉴别器,语言真的很差用描述,不过没关系,咱们来看一个实例就豁然开朗了,咱们知道在上篇中咱们已经有了一个员工的POJO,而后继承这个POJO分红一个男性,一个女性的POJO。.net

二、实例:code

当咱们查询一批员工的时候,咱们但愿的是返回一个List<Employee>,而里面的元素根据性别(sex)自动匹配是MaleEmployee或者是FemaleEmployee,因而咱们须要根据sex的值去决定使用MaleEmployee或者是FemaleEmployee的resultMap去映射,这即是鉴别器。
--------------------- 
原文:https://blog.csdn.net/ykzhen2015/article/details/51249963 xml

5.mybatis的批量更新和批量插入

mybatis三种批量插入方式对比:blog

https://blog.csdn.net/m0_37981235/article/details/79131493

Mybatis中进行批量更新(updateBatch):

https://blog.csdn.net/xyjawq1/article/details/74129316

https://blog.csdn.net/xu1916659422/article/details/77971696

相关文章
相关标签/搜索