如何在mybatis中引用java中的常量和方法

本文介绍了在MyBatis映射XML文件中如何调用Java类的静态方法及获取类常量,并展示了如何使用OGNL表达式进行条件判断。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转自:http://www.68idc.cn/help/jiabenmake/qita/20140821125261.html

 

在mybatis的映射xml文件调用java类的方法:

1.

SELECT * 
FROM
EC_CORE_USER
WHERE 
(user_name=#{userName} or mail =#{userName} or mobile_phone = '${@net.ytoec.framework.security.EncryptionDecryption@dSecret(userName)}') and  user_password=#{userPassword}

 

入上面代码所示。此处应注意,方法必须为静态方法。

 

2.获取类里面的常量:

r.czmc='${@com.ytoxl.module.datahub.kernel.dataobject.EcSystemLog@THE_AUDIT}'

 

3.判断是否为null:

 

<iftest="@org.apache.commons.lang.StringUtils@isNotBlank(province)">andjdo.province=#{province}</if>

 

### MyBatis XML 映射文件中引用对象参数 在MyBatis的XML映射文件中,可以通过多种方式来引用作为参数传递的对象。通常情况下,如果传入的是单个JavaBean、Map或其他类型的对象,则可以直接通过`#{}`占位符访问该对象属性。 对于复杂的数据结构或需要调用特定方法的情况,还可以利用OGNL表达式[^1]。OGNL允许更灵活的操作,比如获取嵌套属性、执行集合操作等。下面是一些具体的应用场景: #### 使用 `#{}` 占位符访问简单属性 当接口方法接收一个POJO(Plain Old Java Object)作为参数时,在Mapper.xml里就可以这样写查询语句: ```sql SELECT * FROM users WHERE username = #{username} ``` 这里的`${}`会被替换成实际传过来的对象里的相应字段值,并且会自动加上引号处理字符串类型数据[^4]。 #### 访问复合条件下的成员变量 假设有一个包含多个过滤条件的类`SearchCriteria`,其中可能有各种用于筛选记录的信息。那么可以在SQL语句中像下面这样做多条件组合查询: ```sql WHERE 1=1 <if test="criteria.name != null"> AND name LIKE CONCAT('%', #{criteria.name}, '%') </if> ... ``` 这里不仅展示了如何使用`#{}`来安全地插入参数,还介绍了动态构建SQL的能力——只有当给定条件下才加入某些部分到最终生成的SQL串中去[^3]。 #### 调用静态方法常量 有时希望直接在SQL里面调用某个工具函数或是引入一些预定义好的枚举/配置项之类的资源。这同样可以借助于OGNL实现: ```sql AND status IN (${@com.example.StatusEnum@values()}) OR flag = ${@Constants@FLAG_ACTIVE} ``` 上述例子分别演示了怎样把枚举行列转成逗号分隔列表以及读取外部定义的一个标志位常数。 #### 特殊字符处理 值得注意的是,在编写含有比较运算符(`>`, `<`)或者其他可能导致XML解析错误符号的地方,应该采用实体编码形式表示出来,例如大于号应写作`>`,小于号则为`<`[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值