MyBatisを使っていて、あるマッピングファイルをみたときにSELECT文が<![CDATA[...]]>
で囲まれているのをみた
<?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="com.example.domain.repository.todo.TodoRepository"> <!-- (2) --> <select id="findAllByCriteria" parameterType="TodoCriteria" resultType="Todo"> <![CDATA[ SELECT todo_id, todo_title, finished, created_at, version FROM t_todo WHERE todo_title LIKE #{title} || '%' ESCAPE '~' AND created_at < #{createdAt} ORDER BY todo_id ]]> </select> </mapper>
<![CDATA[...]]>
が何かわからなかったので調べた
CDATAセクション
<![CDATA[...]]>
はCDATAセクションというらしい
MyBatisというより、XMLの記述方式だった
XML内で"<"や">"などを使う場合、何もしないければ"<"や">"などにエスケープすることが必要だがそれでは可読性が損なわれる
そこで、CDATAセクションを使用すると、"<"や">"のまま使えるようになるらしい
上記例では、created_atに対する条件として"<"を使用しているため、CDATAセクションを指定している