我在我的应用中使用mybatis。我在select元素中使用了bind标签。这是我的映射器代码:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="myapp.model.MyDAO">
<select id="mySelect" parameterType="myapp.model.MyParameterBean" resultType="hashmap">
<bind name="SL" value="_parameter.getSelectList()" />
<bind name="TNS" value="_parameter.getTableNameSuffix()" />
SELECT NAME
#{SL}
FROM MYTABLE_#{TNS}
</select>
</mapper>
当我尝试编译我的应用程序时,我得到一个SAXParseException。详细的错误消息是:
无法解析映射资源:&#39;文件[C:\ myapp \ model \ myMapper.xml]&#39 ;;嵌套异常是org.apache.ibatis.builder.BuilderException:创建文档实例时出错。原因:org.xml.sax.SAXParseException:元素类型&#34; bind&#34;必须申报。 你对这个bahaviour有什么想法吗?
我使用的是spring-mvc。对于spring-mybatis集成,我包括mybatis-spring-1.1.0.jar。
大家好!
答案 0 :(得分:0)
在我的情况下,所有都是完全动态的。选择列表或表名后缀取决于参数。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="myapp.model.MyDAO">
<select id="mySelect" parameterType="myapp.model.MyParameterBean" resultType="hashmap">
<bind name="SL" value="_parameter.getSelectList()" />
<bind name="TNS" value="_parameter.getTableNameSuffix()" />
SELECT NAME
#{SL}
FROM MYTABLE_#{TNS}
</select>
</mapper>
答案 1 :(得分:-1)
<sql>
和<include>
代码的示例
<sql id="columns">
SURNAME,ADDRESS
</sql>
<select id="mySelect" resultType="hashmap">
SELECT NAME,
<include refid="columns">
FROM MYTABLE
</select>