文章出自:http://wksandy.iteye.com/blog/1443133
xml中某些特殊符号作为内容信息时需要做转义,否则会对文件的合法性和使用造成影响
< < > > & & ' ' " "
在mapper文件中写sql语句时,为避免不必要的麻烦(如<等),建议使用<![CDATA[ ]]>来标记不应由xml解析器进行解析的文本数据,由<![CDATA[ ]]>包裹的所有的内容都会被解析器忽略 <![CDATA[ sql语句 ]]>
<select id="getAccountsByBranch" resultType="Account" parameterType="string"> <![CDATA[SELECT * FROM t_acctreg_accounts where acctno < #{acctno}]]> </select>
将整个sql语句用<![CDATA[ ]]>标记来避免冲突,在一般情况下都是可行的,但是如果这样写
<select id="getAccountErrorCount" resultType="int" parameterType="map"> <![CDATA[ select count(*) from t_acctreg_accounterror <where> <if test="enddate != null and enddate != ''"> createdate <= #{enddate} </if> <if test="acctno != null and acctno != ''"> AND acctno LIKE '%'||#{acctno}||'%' </if> </where> ]]> </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语句非法.应该缩小范围,只对有字符冲突部分进行合法性调整
<select id="getAccountErrorCount" resultType="int" parameterType="map"> select count(*) from t_acctreg_accounterror <where> <if test="enddate != null and enddate != ''"> <![CDATA[createdate <= #{enddate}]]> </if> <if test="acctno != null and acctno != ''"> <![CDATA[AND acctno LIKE '%'||#{acctno}||'%']]> </if> </where> </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
<insert id="insertAccountError" statementType="PREPARED" parameterType="AccountError"> INSERT INTO t_acctreg_accounterror(createdate,acctno, errorinfo) VALUES(#{createdate,jdbcType=DATE},#{acctno,jdbcType=VARCHAR},#{errorinfo,jdbcType=VARCHAR}) </insert>
相关推荐
通过掌握以上知识点,我们可以高效地利用MyBatis的代码生成器,实现Mapper文件和Bean的自动化生成,从而提升开发效率,减少重复劳动。在实际开发中,合理运用这样的工具是提升团队协作效率的关键。
6. **注意事项**: - 在使用通用Mapper时,需要注意数据库字段与Java属性的映射关系,确保命名规则的一致性。 - 对于复杂的SQL操作,如关联查询、子查询,可能需要自定义XML配置或使用注解进行扩展。 - 时刻关注...
8. **注意事项**:自动生成的代码可能需要根据业务需求进行调整,例如添加自定义的注解、添加验证逻辑等。同时,保持与数据库同步更新是必要的,当数据库表结构改变时,应及时更新相应的映射类和实体类。 通过理解...
5. **注意事项** - 在运行前,确保数据库连接信息的正确性,以及相关库的版本兼容性。 - 谨慎处理-overwrite参数,以免不小心覆盖了已经修改过的代码。 - 配置文件中的标签应正确配置,避免生成不必要的或错误的...
7. **注意事项** - 数据库权限:确保拥有足够的权限来读取数据库表结构。 - 版本兼容性:确认工具版本与MyBatis框架版本及数据库驱动版本的兼容性。 - 定制化需求:虽然工具能自动生成基础代码,但特定业务逻辑仍...
四、注意事项 1. 确保数据库连接信息正确。 2. 根据实际项目需求,调整MBG配置文件中的生成策略。 3. 为了避免覆盖已有文件,可以设置`<overwrite>`为`false`,新生成的文件将不会替换已存在的文件。 4. 为了保持...
8. **注意事项**:在实际应用中,需确保数据库连接配置正确,Mapper接口与XML文件中的namespace匹配,以及实体类的属性与数据库字段对应。此外,通用Mapper虽然简化了许多操作,但在特殊场景下可能需要自定义SQL,...
6. **使用 Mybatis 的注意事项** - 保持映射器文件和主配置文件的正确引用。 - 注意 XML 格式的正确性,遵循 DTD 定义的规则。 - 谨慎处理 SQL 注入,避免在动态 SQL 中直接使用用户输入的数据。 - 定期更新 ...
5. **注意事项**: - 配置文件中的数据库URL应根据实际环境修改。 - 在生成的代码中,Mybatis通常会为每个字段生成getter和setter方法,以及一个空构造函数和全参构造函数,确保实体类能正确映射到数据库记录。 -...
#### 注意事项 虽然使用`${}`可以解决排序无效的问题,但需要注意的是,这种方式也存在一定的安全隐患。因为`${}`直接将参数值插入到SQL语句中,如果没有对参数值进行适当的校验和过滤,则可能会导致SQL注入攻击的...
8. **注意事项**: 虽然自动生成的代码能节省时间,但有时可能需要对生成的代码进行调整,以适应特定的业务需求或优化性能。例如,可能需要定制复杂的SQL查询,或者添加自定义的逻辑处理。 总的来说,"生成entity和...
5. 注意事项: - 避免直接在Service层中使用SqlSession,应依赖注入Mapper接口,由MyBatis-Spring管理SqlSession生命周期。 - 确保配置的Mapper接口和XML配置文件匹配,否则可能导致无法找到映射的方法。 - 在多...
从文件名称列表中,我们可以看出一些具体的操作指南和注意事项: - "(八)SpringBoot使用mybatis-plus+自动代码生成":这可能是一个教程,讲述了如何在SpringBoot项目中集成MyBatis-Plus并使用其代码生成功能。 - ...
3. **文档**:详细说明如何使用转换工具,以及转换前后代码的对比和注意事项。 4. **测试用例**:确保转换后的MyBatis代码能够正常运行的测试代码。 总的来说,这个工具为开发者提供了一个便捷的途径,帮助他们从...
在整合SpringBoot和Mybatis的过程中,需要注意以下几个关键点,这些步骤将确保Mybatis能正确地与SpringBoot框架集成,提供数据库操作的能力。 1. **引入Mybatis相关依赖**: 在`pom.xml`文件中,你需要添加Mybatis...
七、注意事项 - 配置文件中需要正确指定数据库URL、用户名、密码,以及驱动类。 - 需要在配置文件中指定要生成代码的表名和表前缀(如果有的话)。 - 可以通过配置文件控制是否生成通用的 CRUD 方法,以及生成的实体...
总结来说,“MyBatis自动生成配置文件全解.zip”可能包含了MBG的配置示例、使用教程、注意事项等内容,帮助开发者更好地理解和使用MyBatis的自动代码生成功能,提升开发效率,降低出错概率。如果你在实际开发中遇到...
8. **注意事项**:在实现读写分离时,需要注意数据一致性问题,比如分布式事务的处理。此外,还需要考虑监控和维护多个数据源的复杂性,以及在系统扩展时的数据源扩展策略。 9. **最佳实践**:为了最大化性能提升,...
下面将详细介绍MyBatis Generator的功能、使用方法及注意事项。 一、MyBatis Generator概述 MyBatis Generator通过读取数据库元数据,自动生成对应的Java实体类、Mapper接口以及XML映射文件。这些生成的代码遵循...
MyBatis逆向工程是一种强大的工具,它允许开发者自动生成MyBatis的Mapper接口、XML配置文件以及对应的实体类,极大地简化了数据库操作的代码编写工作。本篇将深入探讨MyBatis逆向工程的基本概念、工作原理以及如何在...