最近项目用到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是一款轻量级的Java持久层框架,它允许开发者将SQL语句写在XML映射文件中,提供了灵活的数据访问层解决方案。本教程将详细讲解如何使用Mybatis连接DB2数据库并进行逆向工程,生成Java实体类、Mapper接口和XML...
通过使用SQL方言包,MyBatis能够更好地适应各种数据库,如MySQL、Oracle和DB2,使得在切换数据库时无需对SQL语句进行大量修改。 1. **MyBatis框架概述** MyBatis是一个轻量级的ORM(对象关系映射)框架,它消除了...
MyBatis是一个轻量级的ORM(Object-Relational Mapping)框架,它允许开发者通过SQL语句来操作数据库,与Spring集成后,可以利用Spring的事务管理功能,简化事务处理代码。 Atomikos是一个开源的JTA(Java ...
6. **Mapper XML文件**:编写Mapper XML文件,写入具体的SQL语句和结果映射。 7. **Struts2配置**:配置Struts2的配置文件,定义Action类和结果页面,设置拦截器。 8. **Action类**:创建Action类,注入Service,...
MyBatis是一款强大的Java持久层框架,它简化了与数据库之间的交互,允许开发者将SQL语句直接编写在映射文件中,提供了灵活的数据访问层。本资源提供的"MyBatis连接数据库所需扩展包"是为了帮助开发者顺利配置和使用...
Ibatis,现更名为...总的来说,使用Ibatis在DB2上进行增删改查,主要涉及到配置文件的调整、SQL语句的编写、映射文件的设定以及事务和缓存的管理。理解并熟练掌握这些要点,能够帮助开发者高效地进行数据库操作。
此外,还需要SQL映射文件(Mapper XML),其中包含了与数据库交互的SQL语句。 2. **JSF页面**:JSF的视图层由一系列的XHTML文件(.xhtml)组成,这些文件包含JSF组件,如输入字段、按钮等,用于用户交互。每个页面...
在数据库中,CLOB(Character Large Object)类型用于存储大文本数据,如长篇文章或XML文档。在使用MyBatis框架进行数据操作...通过这些步骤,可以有效地管理和操作CLOB类型数据,解决插入数据库时可能出现的异常问题。
当 Spring 3.0 与 MyBatis 结合使用时,通常会使用 Spring 的 DataSource、TransactionManager 和 SqlSessionFactoryBean 来管理数据源、事务以及 MyBatis 的会话工厂。这样可以实现数据库操作的事务管理,并且与 ...
在MyBatis框架中,当处理SQL语句时,遇到参数为null的情况,可能会出现一些问题,这主要是由于MyBatis将null值默认映射到JDBC类型的`OTHER`,而并非所有数据库都能正确处理这种类型。这可能导致插入或更新操作失败,...
**MyBatis** 是一个轻量级的持久层框架,它允许开发者将SQL语句直接写在Mapper映射文件中,与Java代码紧密结合,提供了强大的SQL操作能力。在多数据源场景下,MyBatis需要与不同的数据源配合,实现数据访问。 **...
Mybatis PageHelper是一款针对Mybatis框架的高效分页插件,它使得在使用Mybatis进行数据查询时,能够轻松实现数据库的分页功能。PageHelper不仅简化了代码编写,还提高了开发效率,尤其在处理大数据量的场景下,分页...
此外,Mybatis的Executor执行器负责处理SQL的执行,而ParameterHandler、ResultSetHandler和StatementHandler三个处理器则分别处理参数设置、结果集解析和SQL语句的创建。 对于DB2数据库的支持,Ibatis和Mybatis都...
* 内置性能分析插件:可输出 Sql 语句以及其执行时间,建议开发测试时启用该功能,能快速揪出慢查询 * 内置全局拦截插件:提供全表 delete 、update 操作智能分析阻断,也可自定义拦截规则,预防误操作 MyBatis-...
3. 创建Statement或PreparedStatement对象,用于执行SQL语句。 4. 执行SQL:执行查询、更新等操作。 5. 处理结果:如果执行的是查询,获取ResultSet并遍历结果。 6. 关闭资源:在完成操作后,关闭Statement、...
内置性能分析插件可以输出SQL语句以及其执行时间,建议在开发和测试时启用该功能以快速揪出慢查询。内置全局拦截插件提供全表delete、update操作的智能分析阻断,也可自定义拦截规则来预防误操作。框架结构快速开始...
在Java开发领域,尤其是使用MyBatis框架时,MBG是一个不可或缺的辅助工具。它能够根据数据库表自动生成Java实体类、Mapper接口和XML配置文件,从而简化开发流程。 标题中的“mybatis-generator工具下载”指的是获取...
PageHelper插件通过自动处理SQL语句,实现了数据库的兼容性,支持多种主流数据库如MySQL、Oracle、DB2等。在v5.0版本中,它提供了最新的特性和优化,确保了更好的性能和用户体验。 PageHelper的核心功能包括: 1. ...
13. **性能分析插件**:能够输出SQL语句及其执行时间,便于在开发和测试阶段发现慢查询。 14. **全局拦截插件**:智能分析并阻止全表的delete和update操作,防止误操作,同时也支持自定义拦截规则。 15. **SQL注入...
- Mapper XML文件:包含了具体的SQL语句,与Mapper接口对应,定义了SQL的执行逻辑。 - Example类(可选):提供了方便的查询条件构造器,帮助构建复杂的查询条件。 5. **MBG的配置**:MBG的配置文件中,用户可以...