今写动态sql语句时,碰见在test标签中无法与枚举类型作比较的困惑。
解决办法:使用@完整路径在@具体那个类型。就可以引入了
<update id="createFatherTable" parameterType="com.jloong.demo.entity.MetaTable">
CREATE TABLE IF NOT EXISTS ${metaTable.tableName} (
<foreach collection="metaTable.columns" item="item" separator="">
<choose>
<when test="item.type == @com.jloong.demo.entity.DataType@STRING">
${item.columnName} character varying(255) COLLATE pg_catalog."default",
</when>
<when test="item.type == @com.jloong.demo.entity.DataType@CERT">
${item.columnName} character varying(255) COLLATE pg_catalog."default",
</when>
<when test="item.type == @com.jloong.demo.entity.DataType@IP">
${item.columnName} character varying(255) COLLATE pg_catalog."default",
</when>
<when test="item.type == @com.jloong.demo.entity.DataType@KEYWORD || item.type == @com.jloong.demo.entity.DataType@TEXT">
${item.columnName} text COLLATE pg_catalog."default",
</when>
<when test="item.type == @com.jloong.demo.entity.DataType@LONG">
${item.columnName} BIGINT,
</when>
<when test="item.type == @com.jloong.demo.entity.DataType@DOUBLE">
${item.columnName} double precision,
</when>
<otherwise>
${item.columnName} ${item.type},
</otherwise>
</choose>
</foreach>
create_time date
) PARTITION BY RANGE(create_time);
</update>