java - mybatis中使用$与#

标签 java mybatis

我有一个关于“$”和“#”的奇怪问题,为什么单个“$”不起作用?

mybatis-spring-boot-starter版本是2.0.1。

@Select("select * from user where user_id=#{userId}")
User findUserId(int userId);

没关系

@Select("select * from user where user_id=${userId}")
User findUserId(String userId);

有一个错误: org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'userId' in 'class java.lang.String'


我使用mybatis配置useActualParamName=true ,所以我不需要申请@Param ,如果使用@Param

@Select("select * from user where user_id=${userId}")
User findUserId(@Param("userId") String userId);

或者同时使用“#”和“$”

@Select("select * from user where user_id=${userId} and status=#{status}")
User findUserId(String userId, int status);

没关系。

为什么会出现这种情况?如果不使用@Param ,单个 '$' 不起作用并抛出异常?

最佳答案

In mybatis, #{variable} gets replaced with 'variable value' and ${variable} is replaced with variable value(without quotes).

在您的情况下,如果 userId 的值为 String,则会出现异常。

关于java - mybatis中使用$与#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57036084/

相关文章:

java - 构造resultMap为同一个集合创建不同的实例

ibatis - 在 WebSphere Application Server、log4j 中启用 MyBatis SQL 日志

java - 传递 InsertProvider mybatis-annotation 列表 - 非法参数异常

oracle - Mybatis,用序列id插入Oracle

java - Maven 在构建过程中安装 3rd 方依赖项

java - Akka:无法读取 karaf 中的配置

java - 使用 JButton 的无锁循环

java - mybatis - HashMap<String, Object> 结果中的空值被删除

java - JAVA(DAO)和SQL中的聚合关系

java - 创建 Maven 项目,无法解析原型(prototype),连接被拒绝