mybatis ONLアプリケーション拡張
1332 ワード
mybatisではognlの拡張を使って、着信を判断するフィールドを実現します.
Mapperファイル中:
値が0の場合、order by questionTime descはフィールドquestionTimeに従って並べ替えられます.
値が1の場合、order by answerTime descはフィールドanswerTimeに従って並べ替えられます.
Ognl.javaはclassディレクトリ、つまりパッケージ名がないということです.
Mapperファイル中:
<select id="getRecentQuestionTitle" parameterType="java.lang.String" resultType="java.lang.String">
select title from song_question where questionState = #{value}
<if test="@Ognl@isSolve(value[0],0)">
order by questionTime desc
</if>
<if test="@Ognl@isSolve(value[0],1)">
order by answerTime desc
</if>
limit 0,1
</select>
Ognl.javaファイル:/** ognl
* @return
*/
public static boolean isSolve(Object o,String soleState){
if(o == null)
return false;
String str = null;
if(o instanceof String[]){
String[]objects = (String[])o;
str = objects[0];
}else if(o instanceof Character){
Character c = (Character) o;
str = Character.toString(c);
}
if(StringUtils.equals(str, soleState))
return true;
return false;
}
この機能は、着信値に応じて、値が0の場合、order by questionTime descはフィールドquestionTimeに従って並べ替えられます.
値が1の場合、order by answerTime descはフィールドanswerTimeに従って並べ替えられます.
Ognl.javaはclassディレクトリ、つまりパッケージ名がないということです.