Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.example.demo.UserDataMapper"> <select id="findById" resultType="com.example.demo.UserData"> SELECT id , name FROM user WHERE id = #{id} and now() <![CDATA[ < ]]> birth_month </select> </mapper> SELECT id , name FROM user WHERE id = <@p name="id" /> and now() < birth_month MyBatis x FreeMarker FreeMarkerを使うとxmlの決まった記述がなくなり、見通 しが良くなりました。
findById(@Param("id") Long id); } @Mapper public interface UserCustomMapper { @Lang(FreeMarkerLanguageDriver.class) @Select(""" SELECT id , name FROM user WHERE id = <@p name="id" /> AND now() < birth_month """) List<Books> findById(@Param("id") Long id); } MyBatis x FreeMarker テキストブロックを使うと、さらに見通しをよくできるよ うになりました。
name FROM user WHERE id = <@p name="id" /> AND now() < birth_month """, databaseId = "sqlserver") @Select(value = """ SELECT id , name FROM user WHERE id = <@p name="id" /> AND now() < birth_month limit 1 """, databaseId = "PostgreSQL") List<Books> findById(@Param("id") Long id); Top句とLimit句の場合
user with(nolock) WHERE id = <@p name="id" /> AND now() < birth_month """, databaseId = "sqlserver") @Select(value = """ SELECT id , name FROM user WHERE id = <@p name="id" /> AND now() < birth_month """, databaseId = "PostgreSQL") List<Books> findById(@Param("id") Long id); wit h(nolock)の場合
user <#if '${_databaseId}' == 'sqlserver'> WITH (NOLOCK) </#if> WHERE id = <@p name="id" /> AND now() < birth_month """) List<Books> findById(@Param("id") Long id); wit h(nolock)の場合
user <#if '${_databaseId}' == 'sqlserver'> WITH (NOLOCK) </#if> WHERE id = <@p name="id" /> AND now() < birth_month """) List<Books> findById(@Param("id") Long id); wit h(nolock)の場合