在Mybatis映射的xml文件中調(diào)用Java類车海,具體實(shí)現(xiàn)用到了OGNL表達(dá)式笛园,表達(dá)式格式:
${@prefix@methodName(傳遞參數(shù)名稱)}
因?yàn)樾枨髥栴},需要在運(yùn)行sql的時(shí)候自動(dòng)的給sql附上不固定的值侍芝,而OGNL表達(dá)式剛好解決這一問題研铆,具體實(shí)現(xiàn)如下:
xml文件
<insert id="add" useGeneratedKeys="true" >
insert into testTable (field_one)
values (${@com.service.impl.IyunBlessingRecordServiceImpl@testMethed(fieldOne)})
</insert>
Java類
public static String testMethed(String fieldOne) throws ParseException {
// 代碼
return; // String類型
}
上述xml代碼中rankScoring
這一字段的值就是引用了com.service.impl.IyunBlessingRecordServiceImpl
這個(gè)類中的dongAo
靜態(tài)方法,括號(hào)中的值將作為方法的請(qǐng)求參數(shù)竭贩,方法的響應(yīng)參數(shù)會(huì)成為sql中的字段值蚜印。
假如rankScoring
的值為1,類中的方法為這樣:
public static String testMethed(String fieldOne) throws ParseException {
rankScoring ++留量;
return rankScoring ;
}
那么sql編譯完后為這樣
insert into testTable (field_one) values (‘2’)
在刪除窄赋、修改和查詢的sql中同樣生效。
注意:方法必須為靜態(tài)方法楼熄、
Mybatis常用的OGNL表達(dá)式如下
1忆绰、e1 or e2:或
<if test="userEmail != null or userEmail == '1'">
</if>
2、e1 and e2:且
<if test="userEmail != null and userEmail != ''">
</if>
3可岂、e1 == e2 或e1 eq e2:相等
<if test="userEmail == null and userEmail == ''">
</if>
4错敢、e1 != e2 或 e1 neq e2:不等
<if test="userEmail != null and userEmail != ''">
</if>
5、e1 lt e2:小于
<if test="age lt 10">
</if>
6缕粹、e1 lte e2:小于等于
7稚茅、e1 gt e2:大于
8、e1 gte e2:大于等于
9平斩、 e1 + e2(加)亚享,e1 - e2(減),e1 * e2(乘)绘面,e1/e2(除)欺税,e1%e2(余)
10、!e或not e:非揭璃,取反