Mybatis使用总结

1. Mapped Statements collection does not contain value for *.executeSql

原因:xxMapper.xml配置文件和java接口,方法名不匹配。

2. 动态传入纯sql执行:

配置:

<select id="executeSql" parameterType="HashMap" resultType="HashMap" statementType="STATEMENT">
     ${sql}
 </select>

 注意:默认的编译方式改了(预编译改为非预编译),并且参数接受使用${XXX}方式。

3. 对与CLOB字段的处理:

    configuration.xml中配置:

<!-- 大数据类型处理 -->
<typeHandlers>
	<typeHandler javaType="String" jdbcType="CLOB" handler="org.apache.ibatis.type.ClobTypeHandler" />
</typeHandlers>

查询时:

<if test="@com.joinsoft.frame.utils.ongl.Ongl@isNotEmpty(fcontent)">
       AND FCONTENT = #{fcontent,jdbcType=CLOB,typeHandler="org.springframework.orm.ibatis.support.ClobStringTypeHandler"}
</if>

插入和更新时:使用上述配置<typeHandlers>处理。

 4. 需要在xml文件中使用<号的时候如何处理:

一种方法:在某一个类中定义一个属性,使其值为'<',然后parameterType指定为这个类,其符号用其代替。比如我有一个Page类,定义一个属性 startOperator = "<=" 然后调用:${page.startOperator}

另一种方法:采用转义字符直接替换<号为 &lt;  >号为&gt;即可。

注:${name},官方解释这种方式,Mybatis不会修改或者转义字符串。但是这样不安全,存在潜在的注入攻击。因此不应该允许用户直接输入此类字段,或者通常自行转义并检查。

相关推荐