介绍

我们可以在mybatis的xml中通过@符合的方式调用Java类获得返回值进行操作,两种方式

两种方式

1、调用类静态方法

调用类的静态方法:"@类全路径@方法名(入参)" 如 "@com.modules.api.controller.UsersController@testStatic()"

示例
xml

    <select id="test" resultType="com.modules.user.entity.StUsers">
       select * from st_users where id = 7000
       <if test="@com.modules.api.controller.UsersController@testStatic()">
           or id = 7001
       </if>
    </select>

被调用方法
粗体

    public static   boolean testStatic() {
        return true;
    }

日志输出sql 确实拼接了or的sql

JDBC Connection [com.mysql.jdbc.JDBC4Connection@189690a6] will not be managed by Spring
==>  Preparing: select * from st_users where id = 7000 or id = 7001
==> Parameters: 

2. 使用spring依赖注入的方式

例如 #{#deptName} IN ( #{@sdss.getDeptAndChild( #user.deptId )} ) 其中 @sdss 是spring容器中的bean名称 后面就是点方法传入参

示例

/**
 * 数据权限 实现
 */
@Service("sdss")
public class SysDataScopeService {


    public boolean testStatic() {
        return true;
    }
}

xml

    <select id="test" resultType="com.modules.user.entity.StUsers">
       select * from st_users where id = 7000
       <if test="@sdss@testStatic()">
           or id = 7001
       </if>
    </select>

不语
4 声望1 粉丝