✏️

MyBatis 「要素のコンテンツは、整形式の文字データまたはマークアップで構成されている必要があります」の解決方法

2022/07/30に公開

エラー内容

Cause: org.xml.sax.SAXParseException; lineNumber: XX; columnNumber: XX; 要素のコンテンツは、整形式の文字データまたはマークアップで構成されている必要があります。 

解決方法

不等号を使っている箇所を<![CDATA[ ... ]]>で囲む

注意点

scriptで囲ってない時には<![CDATA[ ... ]]>は不要。使ってしまうと逆にエラーになるので注意。

サンプルソース

Kotlinでのサンプル。

@Mapper
interface userMapper{
    @Select(
        """<script>
	    SELECT 
	        name
	    FROM 
	        user
	    WHERE
	        id IN
		<foreach item="id" collection="ids" open="(" separator="," close=")" >
                    #{id}
                </foreach>
		AND delete_flg <![CDATA[ <> ]]> '0'
	</script>"""
    )
    fun findUsersByIds(ids: Long): List<User>
}

Discussion