Mybatis中的常用OGNL表达式

目录
  • Mybatis常用的OGNL表达式如下
  • Mybatis jstl表达式

在Mybatis的动态SQL和${}形式的参数中都用到了OGNL表达式。

Mybatis常用的OGNL表达式如下

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):调用对象方法

<if test="list != null and list.size() > 0 ">
        #{userEmail,jdbcType=VARCHAR},
</if>

12、e.property:对象属性值

<!-- 多接口参数的查询方法(@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、数组和map)

14、@class@method(args):调用类的静态方法

<bind name="name" value="@ex.mybatis.rbac.mapper.UserMaperTest@setName()"/>

15、@class@field:调用类的静态字段值

<bind name="name" value="@ex.mybatis.rbac.mapper.UserMaperTest@NAME"/>

Mybatis jstl表达式

写了一个特别简单的小例子,使用struts1+mybatis+spring,,,其中做了一个增删改查,

结果遇到了一个特别无知的错误!以后一定要记住,不能再犯了!

我在数据库中建的表的字段是xx_xx这种格式的,例如notice_title,在pojo实体类中定义的属性是noticeTitle这种形式的,

在做查找所有数据的时候,sql语句中对各个字段起了别名,但是别名没有与pojo类的属性名对应,导致resultMap对应的类不能与自己起的别名对应,导致不能进行实体类封装值

 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>内容</td>
        <td>发表时间</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>

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Mybatis如何使用ognl表达式实现动态sql

    本文讲述在mybatis中如何使用ognl表达式实现动态组装sql语句 新建Users实体类: public class Users { private Integer uid; private String userName; private String tel; //添加上面私有字段的get.set方法 } 新建一个Dao接口类,mybatis配置文件在配置namespace属性时需要加入这个类的完整类名,找到这个类里的方法执行: public interface UserDao { /*

  • MyBatis中OGNL的使用教程详解

    前言 本文主要给大家讲如何在MyBatis中使用OGNL的相关内容,分享出来供大家参考学习,感兴趣的朋友们下面来一起看看详细的介绍: 如果我们搜索OGNL相关的内容,通常的结果都是和Struts有关的,你肯定搜不到和MyBatis有关的,虽然和Struts中的用法类似但是换种方式理解起来就有难度. MyBatis常用OGNL表达式 e1 or e2 e1 and e2 e1 == e2,e1 eq e2 e1 != e2,e1 neq e2 e1 lt e2:小于 e1 lte e2:小于等于,

  • Mybatis利用OGNL表达式处理动态sql的方法教程

    本文介绍的是关于Mybatis中用OGNL表达式处理动态sql的相关内容,分享出来供大家参考学习,下面来一起看看详细的介绍: 常用的Mybatis动态sql标签有6种: 1. if 语句 (简单的条件判断) 2. choose (when,otherwize) ,相当于Java 语言中的 switch ,与 jstl 中的choose 很类似. 3. trim (对包含的内容加上 prefix,或者 suffix 等,前缀,后缀) 4. where (主要是用来简化sql语句中where条件判断

  • Mybatis中的常用OGNL表达式

    目录 Mybatis常用的OGNL表达式如下 Mybatis jstl表达式 在Mybatis的动态SQL和${}形式的参数中都用到了OGNL表达式. Mybatis常用的OGNL表达式如下 1.e1 or e2:或 <if test="userEmail != null or userEmail == '1'"> </if> 2.e1 and e2:且 <if test="userEmail != null and userEmail != '

  • 通过实例深入学习Java的Struts框架中的OGNL表达式使用

    Struts 2默认的表达式语言是OGNL,原因是它相对其它表达式语言具有下面几大优势: 1. 支持对象方法调用,如xxx.doSomeSpecial(): 2. 支持类静态的方法调用和值访问,表达式的格式为@[类全名(包括包路径)]@[方法名 | 值名],例如:@java.lang.String@format('foo %s', 'bar')或@tutorial.MyConstant@APP_NAME: 3. 支持赋值操作和表达式串联,如price=100, discount=0.8, cal

  • 聊聊Mybatis中sql语句不等于的表示

    Mybatis sql语句不等于的表示 如果直接写 select * from user where id <> 217; mybatis就会报语法错误,<>特殊字符需要转义 如下 select * from user where id <> 217; 使用Mybatis的时候,特殊字符需进行转义,如 <> <> & & &apos; ' " " Mybatis 特殊符号(大于,小于,不等于)及常用函数

  • OGNL表达式基本语法与用法详解

    一.OGNL中的#.%和$符号 #.%和$符号在OGNL表达式中经常出现,而这三种符号也是开发者不容易掌握和理解的部分.在这里我们简单介绍它们的相应用途. 1.#符号的三种用法 1)访问非根对象属性,例如示例中的#session.msg表达式,由于Struts 2中值栈被视为根对象,所以访问其他非根对象时,需要加#前缀.实际上,#相当于ActionContext. getContext():#session.msg表达式相当于ActionContext.getContext().getSessi

  • 基于mybatis中test条件中单引号双引号的问题

    目录 test条件中单引号双引号问题 具体原因 动态sql中test的一些问题 mybatis动态sql中OGNL中type=="1"和type='1'的区别 解决方案 test条件中单引号双引号问题 在mybatis中test判断条件中使用单引号会报错 通常使用双引号 通常test后的判断条件写在双引号内,但是当条件中判断使用字符串时应该如下方式开发 <when  test="channel ==null" > <when  test='chan

  • mybatis中的test语句失效处理方式

    目录 mybatistest语句失效 解决方案也很简单 mybatistest判断注意事项 误将一个传入的整型数据使用了下面的判断方式 同样整数数据也会转换为double类型 mybatis test语句失效 正常情况下,写动态sql的if test或when test语句时,条件引用为双引号括单引号 如下:  <select id="sel1" resultType="User">           select * from tb_user    

  • mybatis中@Param注解总是报取不到参数问题及解决

    目录 @Param注解总是报取不到参数 错误如下 @Param注解详细使用方法 1.@Param这个注解是用来解决接口方法有多个参数时 2.可以修饰JavaBean对象.Map集合等 3.@Param参数其实可加可不加 4.使用@Param注解好处 @Param注解总是报取不到参数 springboot+mybatis项目中,在mapper 层传多个参数,请求时总是报参数取不到,快疯了,我发誓xml层没问题,mapper层参数名也没问题 错误如下 百度了好久,一直让我检查.xml文件是否存在问题

随机推荐