Mybatis中的常用OGNL表達(dá)式
在Mybatis的動(dòng)態(tài)SQL和${}形式的參數(shù)中都用到了OGNL表達(dá)式。
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"> ?? ??? ?#{userEmail,jdbcType=VARCHAR}, </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:非,取反
11、e.method(args):調(diào)用對(duì)象方法
<if test="list != null and list.size() > 0 "> ?? ??? ?#{userEmail,jdbcType=VARCHAR}, </if>
12、e.property:對(duì)象屬性值
<!-- 多接口參數(shù)的查詢方法(@Param + javaBean方式) --> ? <select id="selectByUserIdAndEnabledUseBean" resultMap="BaseResultMap"> ? ? select r.id, r.role_name, r.enabled, r.create_by, r.create_time,? ? ? u.user_name as "user.userName", u.user_email as "user.userEmail" ? ? from sys_user u? ? ? inner join sys_user_role ur on u.id = ur.user_id? ? ? inner join sys_role r on ur.role_id = r.id? ? ? where u.id = #{user.id} and r.enabled = #{role.enabled} </select>
13、e1[e2]:按索引取值(List、數(shù)組和map)
14、@class@method(args):調(diào)用類的靜態(tài)方法
<bind name="name" value="@ex.mybatis.rbac.mapper.UserMaperTest@setName()"/>
15、@class@field:調(diào)用類的靜態(tài)字段值
<bind name="name" value="@ex.mybatis.rbac.mapper.UserMaperTest@NAME"/>
Mybatis jstl表達(dá)式
寫(xiě)了一個(gè)特別簡(jiǎn)單的小例子,使用struts1+mybatis+spring,,,其中做了一個(gè)增刪改查,
結(jié)果遇到了一個(gè)特別無(wú)知的錯(cuò)誤!以后一定要記住,不能再犯了!
我在數(shù)據(jù)庫(kù)中建的表的字段是xx_xx這種格式的,例如notice_title,在pojo實(shí)體類中定義的屬性是noticeTitle這種形式的,
在做查找所有數(shù)據(jù)的時(shí)候,sql語(yǔ)句中對(duì)各個(gè)字段起了別名,但是別名沒(méi)有與pojo類的屬性名對(duì)應(yīng),導(dǎo)致resultMap對(duì)應(yīng)的類不能與自己起的別名對(duì)應(yīng),導(dǎo)致不能進(jìn)行實(shí)體類封裝值
?public ActionForward show(ActionMapping mapping, ActionForm form, ??????????? HttpServletRequest request, HttpServletResponse response) ??????????? throws Exception { ?????? ? ??????? List<Notice> noticeList = noticeService.getNoticeList(); ??????? request.setAttribute("noticeList", noticeList); ??????? return mapping.findForward("begin"); ??? }
<table border="1"> ??? <tr> ??????? <td>選擇</td> ??????? <td>主題</td> ??????? <td>內(nèi)容</td> ??????? <td>發(fā)表時(shí)間</td> ??????? <td>備注</td> ??????? <td>編輯人員</td> ??? </tr> ??? <c:forEach var="notices" items="${requestScope.noticeList }" > ??? <tr> ??????? <td><input type="checkbox" name="keyid" value="${notices.keyid}"/></td> ??????? <td>${notices.noticeTitle}</td> ??????? <td>${notices.noticeContent }</td> ??????? <td>${notices.noticePublishTime}</td> ??????? <td>${notices.noticeComment}</td> ??????? <td>${notices.noticeEditor }</td> ??? </tr> ??? </c:forEach> </table>
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring注解@EnableWebMvc使用的坑點(diǎn)及解析
這篇文章主要介紹了Spring注解@EnableWebMvc使用的坑點(diǎn)及解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09Spring Security使用數(shù)據(jù)庫(kù)認(rèn)證及用戶密碼加密和解密功能
這篇文章主要介紹了Spring Security使用數(shù)據(jù)庫(kù)認(rèn)證及用戶密碼加密和解密,本文通過(guò)代碼與截圖的形式給大家介紹的非常詳細(xì),對(duì)大家的工作或?qū)W習(xí)具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03在Spring Boot項(xiàng)目中引入本地JAR包的步驟和配置
本文探討了在Spring Boot項(xiàng)目中引入本地JAR包的步驟和必要的配置,通過(guò)使用Maven的system作用域,開(kāi)發(fā)者可以將自定義的本地庫(kù)或功能集成到Spring Boot應(yīng)用程序中,,需要的朋友可以參考下2023-10-10java實(shí)現(xiàn)的2048游戲完整實(shí)例
這篇文章主要介紹了java實(shí)現(xiàn)的2048游戲,結(jié)合完整實(shí)例形式分析了java實(shí)現(xiàn)2048游戲功能的相關(guān)數(shù)值運(yùn)算、swing組件布局、事件響應(yīng)等相關(guān)操作技巧,需要的朋友可以參考下2018-01-01SpringBoot使用Flyway進(jìn)行數(shù)據(jù)庫(kù)管理的操作方法
Flyway是一個(gè)開(kāi)源的數(shù)據(jù)庫(kù)版本管理工具,并且極力主張“約定大于配置”,簡(jiǎn)單、專注、強(qiáng)大。接下來(lái)通過(guò)本文給大家介紹SpringBoot使用Flyway進(jìn)行數(shù)據(jù)庫(kù)管理的方法,感興趣的朋友一起看看吧2021-09-09Spring?Boot實(shí)現(xiàn)配置文件的自動(dòng)加載和刷新功能
這篇文章我們介紹了Spring?Boot如何實(shí)現(xiàn)配置文件的自動(dòng)加載和刷新,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2023-05-05Intellij IDEA 2017.3使用Lombok及常用注解介紹
這篇文章主要介紹了Intellij IDEA 2017.3使用Lombok及常用注解介紹,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09java對(duì)象強(qiáng)轉(zhuǎn)成object的方法實(shí)現(xiàn)
在 Java 編程中,有時(shí)候我們需要將一個(gè)具體的對(duì)象強(qiáng)制轉(zhuǎn)換成 Object 類型,本文主要介紹了java對(duì)象強(qiáng)轉(zhuǎn)成object的方法實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03