gpt4 book ai didi

java - MyBatis:使用动态查询比较字符串值

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:06:07 26 4
gpt4 key购买 nike

我正在使用 MyBatis 映射一些需要比较 String 的查询参数(myString)。

我的映射器界面是:

public Map<Integer, String> findSomething(@Param("myString") String myString);

我的XML如下:

<select id="findSomething" parameterType="String" resultType="Map">
SELECT column1 as key,
column2 as value
FROM my_table
<where>
<choose>
<when test="myString == 'xxx'">
column3 = 1
</when>
<when test="myString == 'yyy'">
myColumn = 2
</when>
<when test="myString == 'zzz'">
myColumn = 3
</when>
</choose>
</where>
ORDER BY value;
</select>

当我执行这条语句时,抛出以下错误:

ERROR [stderr] Caused by: org.apache.ibatis.exceptions.PersistenceException: 
ERROR [stderr] ### Error querying database. Cause: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'myString' in 'class java.lang.String'

A String这样比较,味道不好。不幸的是,这是数据库建模的方式。

MyBatis 版本:3.2.2

最佳答案

使用 MyBatis 3.2.8 测试

<select id="findSomething" parameterType="String" resultType="Map">
SELECT column1 as key,
column2 as value
FROM my_table
<where>
<choose>
<when test='"xxx".equals(myString)'>
column3 = 1
</when>
<when test='"yyy".equals(myString)'>
myColumn = 2
</when>
<when test='"zzz".equals(myString)'>
myColumn = 3
</when>
</choose>
</where>
ORDER BY value;
</select>

请注意 test 周围的单引号和 de 常量值周围的双引号。如您所见,诀窍是使用 equals。

关于java - MyBatis:使用动态查询比较字符串值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19450304/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com