2019独角兽企业重金招聘Python工程师标准>>>

转:mybatis写mapper文件注意事项

mybatis3 mapper cdata mybatis3 null

xml中某些特殊符号作为内容信息时需要做转义,否则会对文件的合法性和使用造成影响

Html代码  
  1. &lt; <
  2. &gt; >
  3. &amp; &
  4. &apos; '
  5. &quot; "

在mapper文件中写sql语句时,为避免不必要的麻烦(如<等),建 议使用<![CDATA[ ]]>来标记不应由xml解析器进行解析的文本数据,由<![CDATA[  ]]>包裹的所有的内容都会被解析器忽略 <![CDATA[ sql语句 ]]>

Xml代码  
  1. <select id="getAccountsByBranch" resultType="Account" parameterType="string">
  2. <![CDATA[SELECT * FROM t_acctreg_accounts where acctno < #{acctno}]]>
  3. </select>

将整个sql语句用<![CDATA[   ]]>标记来避免冲突,在一般情况下都是可行的,但是如果这样写

Xml代码  
  1. <select id="getAccountErrorCount" resultType="int" parameterType="map">
  2. <![CDATA[
  3. select count(*) from t_acctreg_accounterror
  4. <where>
  5. <if test="enddate != null and enddate != ''">
  6. createdate <= #{enddate}
  7. </if>
  8. <if test="acctno != null and acctno != ''">
  9. AND acctno LIKE '%'||#{acctno}||'%'
  10. </if>
  11. </where>
  12. ]]>
  13. </select>

就会收到错误信息:

org.springframework.jdbc.UncategorizedSQLException: Error setting null parameter. Most JDBC drivers require that the JdbcType must be specified for all nullable parameters. Cause: java.sql.SQLException: 无效的列类型: 1111 ; uncategorized SQLException for SQL []; SQL state [99999]; error code [17004]; 无效的列类型: 1111; nested exception is java.sql.SQLException: 无效的列类型: 1111

这是由于该sql配置中有动态语句(where,if),where,if 条件不能放在<![CDATA[ ]]>中,否则将导致无法识别动态判断部分,导致整个sql语句非法.应该缩小范围,只对有字符冲突部分进行合法性调整

Xml代码  
  1. <select id="getAccountErrorCount" resultType="int" parameterType="map">
  2. select count(*) from t_acctreg_accounterror
  3. <where>
  4. <if test="enddate != null and enddate != ''">
  5. <![CDATA[createdate <= #{enddate}]]>
  6. </if>
  7. <if test="acctno != null and acctno != ''">
  8. <![CDATA[AND acctno LIKE '%'||#{acctno}||'%']]>
  9. </if>
  10. </where>
  11. </select>

还有在向oracle插入数据时,mybatis3报Error setting null parameter. Most JDBC drivers require that the JdbcType must be specified for all nullable parameters,是由于参数出现了null值,对于Mybatis,如果进行操作的时候,没有指定jdbcType类型的参数,mybatis默认 jdbcType.OTHER导致,给参数加上jdbcType可解决(注意大小写)

http://code.google.com/p/mybatis/issues/detail?id=224&q=Error%20setting%20null%20parameter&colspec=ID

Xml代码  
  1. <insert id="insertAccountError" statementType="PREPARED"
  2. parameterType="AccountError">
  3. INSERT INTO t_acctreg_accounterror(createdate,acctno, errorinfo)
  4. VALUES(#{createdate,jdbcType=DATE},#{acctno,jdbcType=VARCHAR},#{errorinfo,jdbcType=VARCHAR})
  5. </insert>

转载于:https://my.oschina.net/u/232879/blog/146337

mybatis配置文件解析错误解决方法相关推荐

  1. wireshark协议解析错误解决方法

    起因: 由于wireshark能解析的协议太多,某些数据包会被错误的解析成别的协议 解决: 在被错误解析的分组上右键,选择协议首选项,disable 错误的协议,直至以正确的协议进行解析. 也要到上面 ...

  2. Android 下载 自动安装 解析错误,studio下载APK到手机提示解析错误解决方法

    下载完Android studio,第一件事就是想写hello world,照着第一行代码,新建project,建立一个已经搭好框架的activity,make然后run,很快就执行完成,下图是在选择 ...

  3. outlook服务器响应错误,outlook 错误代码解析与解决方法

    outlook错误代码解析与解决方法 一般错误: 0x800C0131和0x800C013E:Folders.dbx档案属性错误或损坏 解决方法:Folders.dbx为Outlook Express ...

  4. GetLastError()10013错误解决方法及错误列表

    10013错误解决方法 10013错误为以一种访问权限不允许的方式做了一个访问套接字的尝试. 错误原因: 1.SOCKET socketRaw = socket(AF_INET,SOCK_RAW,IP ...

  5. mybatis配置文件解析

    mybatis配置文件解析 mybatis核心配置文件`mybatis-config.xml文件. mybatis的配置文件包含了会深深影响mybatis行为的设置和属性信息. 能配置的内容: con ...

  6. gii无法访问 yii2_YII2框架访问gii、debug页面404的错误解决方法

    之前在介绍Yii框架的时候就说过 Yii 支持 gii 功能, gii 去自动生成 Web 站点常用功能的代码,也就是我们经常说的 CURD 操作,增删改查.使用 gii 生成代码也是非常的简单,Gi ...

  7. html页面在ie上出现404怎么解决,ie浏览器网页上有错误解决方法详解

    ie浏览器网页上有错误解决方法详解 最近网友反馈我的浏览器左下角总显示"网页上有错误",我已经修复过IE了,可是不管用.然后在浏览器上看不到网上的视频和图片的播放.在QQ空间上输入 ...

  8. java telephony jar_编译错误解决方法

    首页板块列表刷机技术阅读帖子 编译错误解决方法 发布时间:2015-05-19 18:153回复.2072阅读 前言:关于Android4.4/CM11编译中遇到的一些错误,本人进行了整理.有需要的童 ...

  9. nginx在linux reload报错,nginx关于reload的两个错误解决方法,nginxreload

    nginx关于reload的两个错误解决方法,nginxreload 解决Nginx: [error] open() "/usr/local/Nginx/logs/Nginx.pid 重新启动服务器, ...

最新文章

  1. 物联网协议对比(HTTP、websocket、XMPP、COAP、MQTT和DDS协议)
  2. php 生成等比例缩略图,PHP等比例生成缩略图
  3. 苹果电脑通过密钥对的方式登录linux系统
  4. Redis删除副本节点
  5. java scanner_Java Scanner nextLong()方法与示例
  6. c++两个vector合并_数据结构——算法初步(4)——合并排序算法
  7. python-数字数据类型-整数类型-浮点数类型-数据类型间的转换
  8. 运维堡垒机(跳板机)系统 python
  9. 2018年python工作好找吗-Python的发展状况-2018年
  10. Android ScrollView 实现整个界面变成列表
  11. zabbix3.2自动发现
  12. cocos studio 基本功能添加——场景(Scene)
  13. 《红周刊》独家对话芒格:你可以随自己喜欢一辈子不理性,那必然承受糟糕结果
  14. UKEY开发,vue+websocket实现用户登录UKEY认证
  15. layer弹出层自适应高度,垂直水平居中
  16. 爬虫|wallhere壁纸批量下载
  17. Vmware安装Centos及Linux的介绍,命令
  18. RPA学习天地:艺赛旗RPA高阶培训(一)产品基础架构
  19. 不懂就问:PHP浮点数中的e和E分别表示什么?
  20. java.有空值的对象序列化_java – 如何防止Map中的空值和bean中的空字段通过Jackson序列化...

热门文章

  1. ORACLE中的两个概念:user和schema的区别和联系
  2. eclipse 中 构建路径下的 order and export 是干什么用
  3. Oracle中table变量在JDBC中的运用
  4. 写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的消息。
  5. Tornado-Lesson05-模版继承、函数和类导入、ui_methods和ui_modules
  6. 《软件工程》课程设计总结
  7. gulp与grunt对比
  8. Apache-Tomcat的安装配置
  9. static_cast, dynamic_cast, reinterpret_cast, const_cast区别比较
  10. js实现浏览器后退页面刷新