问题情境:在使用mybatis 3.0.6版本,mybatis-spring 1.0.0版本时,使用include引入sql标签内容时会有异常出现。
解决办法:通过查询资料了解到这问题是由于mybatis-spring低版本存在的bug,升级为1.0.2即可解决。
1、升级mybatis-spring由1.0.0改为1.0.2(注:mybatis版本用的是3.0.6),pom.xml修改如下
<properties>
<mybatis-spring.version>1.0.2</mybatis-spring.version>
</properties>
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>${mybatis-spring.version}</version>
</dependency>
</dependencies>
2、mybatis中mapper代码段使用示例
<sql id="sql_body">
from table_example
<where>
<if test="name != null"> name = #{name} </if>
</where>
</sql>
<select id="getResult" parameterType="map" resultMap="map">
select name
<include refid="sql_body"/>
</select>
<select id="getTotalCount" parameterType="map" resultMap="map">
select count(0) as totalCount
<include refid="sql_body"/>
</select>
注意如果sql_body与getResult、getTotalCount不在同一个文件,引入的时需要加上命名空间标识,示例<include refid="Example.sql_body"/>
(其中Example为命令空间,定义在mapper标签的namespace属性上),另外注意修改后重启服务器。
(原文发表于:http://www.wangdandong.com/2015/01/27/use-mybatis-include-tag.html )
网友评论