如何在带有SQL语句的querydsl中使用mysql函数?

问题描述

数据库中的电话号码已加密,因此我必须使用解密功能。所以我写了这样的代码,但是没有用。我该怎么做?

这是我的代码

    BooleanBuilder builder = new BooleanBuilder();
            if(StringUtils.hasText(memberVO.getSearchTypeCd()) && StringUtils.hasText(memberVO.getSearchText())) {
                if(memberVO.getSearchTypeCd().equals("memNm")) {
                    builder.and(info.memNm.contains(memberVO.getSearchText()));
                }
                if(memberVO.getSearchTypeCd().equals("nickNm")) {
                    builder.and(info.nickNm.contains(memberVO.getSearchText()));            
                }
                if(memberVO.getSearchTypeCd().equals("hpNo")) {             
                    //FN_DECRYPT is not working
                    builder.and(info.nickNm.prepend("FN_DECRYPT(").append(")").contains(memberVO.getSearchText()));
                }
            }

我想在sql中键入这样的内容


WHERE FN_DECRYPT(hpNo) LIKE '%010-0000-0000%'

谢谢。

解决方法

最后我解决了


    BooleanBuilder builder = new BooleanBuilder();
    if(StringUtils.hasText(memberVO.getSearchTypeCd()) && StringUtils.hasText(memberVO.getSearchText())) {
        if(memberVO.getSearchTypeCd().equals("memNm")) {
            builder.and(info.memNm.contains(memberVO.getSearchText()));
        }
        if(memberVO.getSearchTypeCd().equals("nickNm")) {
            builder.and(info.nickNm.contains(memberVO.getSearchText()));            
        }
        if(memberVO.getSearchTypeCd().equals("hpNo")) {                             
            builder.and(Expressions.booleanTemplate("FN_DECRYPT({0}) LIKE '%" + memberVO.getSearchText().replaceAll("-","") + "%'",info.hpNo));
        }
    }

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...