mybatis xml 使用静态变量

爱吃蛋挞的kk 发布于 10/11 15:56
阅读 396
收藏 1
<if test="${@xxx.base.entity.IdEntity@dbType} == 'oracle'">'%'||#{et.value}||'%'</if>
<if test="${@xxx.base.entity.IdEntity@dbType} == 'mssql'">'%'+#{et.value}+'%'</if>
<if test="${@xxx.base.entity.IdEntity@dbType} == 'mysql'">concat('%',#{et.value},'%')</if>

IdEntity.java

private static String dbType;
@Value("${spring.datasource.druid.db-type}")
public void setDbType(String dbTypeStr) {
    dbType = dbTypeStr;
}

按照网上学的方法

${@全路径类名称@静态变量|@静态方法}
@全路径类名称@静态变量|@静态方法

也不行啊

错误

Error evaluating expression '${@com.creatsoft.snow.core.base.entity.IdEntity@dbType} == 'oracle''

大家知道什么问题吗

加载中
0
爱吃蛋挞的kk
爱吃蛋挞的kk

。。。这个是不是都看不见啊

0
philonic
philonic

test里面写成下面那样试试,

@net.yutuo.test.common.DynamicContextHolder@getDataSourceId() == 'dataSource_0'

或者参考这种写法https://yutuo.net/archives/5d5dc33e001b7597.html

爱吃蛋挞的kk
爱吃蛋挞的kk
<if test="@xx.base.entity.IdEntity@dbType == 'mysql'">concat('%',#{et.value},'%')</if>
爱吃蛋挞的kk
爱吃蛋挞的kk
Error evaluating expression '@xx.base.entity.IdEntity@dbType == 'mysql''. Cause: org.apache.ibatis.ognl.OgnlException: Could not get static field dbType from class 还是不行
0
不大不小开发
<if test="'${@xxx.base.entity.IdEntity@dbType}' == 'oracle'">'%'||#{et.value}||'%'</if> 静态变量加上单引号试试
爱吃蛋挞的kk
爱吃蛋挞的kk
我的静态函数私有的改成公用就好了 楼下是正解
爱吃蛋挞的kk
爱吃蛋挞的kk
这个好像不是哎 表达式中不能这样写我试过 在写sql语句的时候可以‘${@xxx.IdBean@Type}}’
0
李小默LXM
李小默LXM

        <where>
            <if test="2 != @com.ligang.dto.User@num">
                id = #{id}
            </if>
        </where>

 

        <where>
            <if test="1 != @com.ligang.dto.User@getNum()">
                id = #{id}
            </if>
        </where>

爱吃蛋挞的kk
爱吃蛋挞的kk
谢谢大佬 看了你的代码我以为必须把静态常量放在后面 然后发现其实都一样 我的静态常量是private改public就好用了,不细心导致也没关注这个 感谢感谢
李小默LXM
李小默LXM
public class User { public static int num = 2; public static int getNum() { return 2; } }
返回顶部
顶部