Stephenmu 2012-05-24
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}
另一种方法:采用转义字符直接替换<号为 < >号为>即可。
注:${name},官方解释这种方式,Mybatis不会修改或者转义字符串。但是这样不安全,存在潜在的注入攻击。因此不应该允许用户直接输入此类字段,或者通常自行转义并检查。
② Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql 的parameterType的类型相同。④ Mapper.xml文件中的namespace即是mapper接口的类路径。