最近项目用到mybatis3.1和db28.1版本的数据库,出现一个问题,我研究半天把mybatis源码给改了,竟然成功解决。

直接入正题:在mybatis映射文件中写sql语句时如果有折行情况就报错,db2说有非法字符。原因是db2数据库默认回车符就是去执行sql语句,db2控制台提供了 'db2 -td;' 这个命令,意思是sql语句以分号结束,这样在控制台执行sql语句时就可以换行了,要命的是即使在控制台该命令也只是在本次回话中有效。但是现在和mybatis结合使用,无法解决这个问题。我想到了改mybatis源码,千辛万苦找到了对应的代码如下:

org.apache.ibatis.builder.annotation.MapperAnnotationBuilder中buildSqlSourceFromStrings方法负责将xml中sql语句解析出来,但是在将字符串的sql转换成TextSqlNode对象是代码如下:

1. contents.add(new TextSqlNode(sql.toString()));

2. public TextSqlNode(String text) {

this.text = text;

}

就在第二步mybatis没有对sql字符串中的换行符做处理导致上面的问题,其实代码改动非常小,就是把换行符和回车符替换成空格:

public TextSqlNode(String text) {

this.text = text.replaceAll("\n|\r", " ");

}

至此重新打jar包放到项目中,HLL的成功了!

PS:有个小问题,mybatis没有开放ognl相关的类,100多个啊,我一个一个down下来的。求解释。。。

附jar包一份~

解决Mybatis结合db2时sql语句换行出现的问题相关推荐

  1. DB2中sql语句占位符问题

    初到公司实习,让做一个网站,使用struts2+spring框架,数据库使用的是DB2,以前没接触过DB2,对它不了解.在写sql语句的时候遇到一些问题,首先就是在mysql下的limit到了DB2中 ...

  2. mybatis log4j 在日志中打印sql_SpringBoot整合MyBatis+详细打印执行SQL语句

    图片来源网路 为啥写这篇文章呢,有人可能会说springBoot的mybatis的starter都有了写这篇文章不是多此一举吗?难道是真的吗?其实我一开始也是使用mybatis的starter的,但是 ...

  3. db2经典SQL语句大全

    db2经典SQL语句大全 下列语句部分是Mssql语句,不可以在access中使用.  SQL分类: DDL-数据定义语言(CREATE,ALTER,DROP,DECLARE)  DML-数据操纵语言 ...

  4. MyBatis超详细介绍——SQL语句构建器类

    MyBatis超详细介绍--SQL语句构建器类 (本文作为学习笔记,了解更多请参考:MyBatis参考文档) MyBatis3提供了SQL类帮助构造SQL语句: private String sele ...

  5. Mybatis映射文件动态SQL语句-01

    因为在很多业务逻辑复杂的项目中,往往不是简单的sql语句就能查询出来自己想要的数据,所有mybatis引入了动态sql语句, UserMapper.xml <?xml version=" ...

  6. DOTNET零碎总结---VB.NET修改数据存在多个txtbox时,SQL语句的操作

    2.DOTNET零碎总结---VB.NET修改数据存在多个txtbox时,SQL语句的操作 1. 一个Button1的text为查询和一个DataGridView1,点击查询按钮的代码 Private ...

  7. 自增长主键值设为null时sql语句执行报错

    自增长主键值设为null时sql语句执行报错 1.在进行用户信息添加时,需要把界面获取的数据参数添加到mysql数据库中,数据库表创建方法如下: 可以看出已经把字段id设置为自增长类型的主键(已经标有 ...

  8. Mybatis 开启控制台打印sql语句

    概述 springboot+mybatis整合过程中,开启控制台sql语句打印的多种方式: 方法1 在springboot+mybatis整合中,可以将springboot的配置文件添加如下一段也可: ...

  9. oracle大于号怎么用,解决MyBatis的mapper中SQL小于号或大于号报错-tag name expected

    通常写SQL我们都会在Navicat里面写好条件测试没问题之后才会把SQL放到mapper里面,有次我在写Oracle的分页的时候因为用到了<=符号,在Navicat测试的时候是没问题的,但是放 ...

最新文章

  1. python3 进程池中使用队列Queue
  2. visual studio 阅读 linux-kernel
  3. ReSharper 配置及用法(转)
  4. PS效果教程——冒充手绘效果
  5. html日历显示不完整,求html代码,显示日历和时间的代码
  6. Harbour.Space Scholarship Contest 2021-2022 (open for everyone, rated, Div. 1 + Div. 2)(A - D)
  7. 高性能开发,别点,发际线要紧!
  8. 如何将你的Qt项目打包安装在MeeGo系统中
  9. java数组按某个值排序_Js--使用sort根据数组中对象的某一个属性值进行排序
  10. 当年叱咤风云的框架Struts2,你可知Struts2内功如何修炼之体系结构
  11. 如何部署一台DELL虚拟化服务器:CentOS7.4系统,虚拟化技术
  12. 线程安全问题和Synchronized的使用
  13. 网络安全实验室 基础题 解析
  14. 记录一个好用的压缩软件 HandBrake
  15. IOS开发之UI进阶(设置圆角,边框颜色,边框宽度)
  16. 个人计算机中的防病毒软件无法,为什么无法在计算机上安装360防病毒软件?
  17. Ubuntu11.10安装科磊NW336驱动
  18. PS怎么旋转图片方向
  19. bootstrap-table的refresh查询
  20. php 图片上加文字,php使用GD库实现图片上添加文字的方法(代码)

热门文章

  1. Android权限设置大全
  2. 腾讯Q+正式宣布开放下载 已上线超150款应用
  3. 新点软件登陆科创板:上市首日破发,腾讯、建发股份参与认购
  4. 百家号图文视频优质规则
  5. 华为eNSP的安装——解决重复安装多次不成功
  6. 美伦美唤|颇具辨识度的桌搭好物,漫步者蓝牙音响上手评测
  7. 抖音运营怎么做?在线教你获取抖音赚钱方法!
  8. Jquery遍历数组之$.inArray()方法介绍
  9. KNN 朴素贝叶斯
  10. 国内基于浏览器的在线截屏插件方案汇总分析