如何通过include标签重用mybatis的代码段

96
王旦东
2017.03.13 18:48* 字数 215

问题情境:在使用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

日记本
Web note ad 1