Ibatis绑定异常错误信息

问题描述 投票:0回答:2

我正在尝试实现以下 ibatis 插入注释,但不断收到以下错误消息:

org.apache.ibatis.binding.BindingException:参数“person”不是 成立。可用参数为 [arg1, arg0, param1, param2]

这是我到目前为止的代码。我该如何解决它?

@(Insert("INSERT INTO profile (person, school) VALUES (#{person}, #{school})";)
void insertOne(TestTextMessage person, String school)

一些背景:

尝试过这个...

@(Insert("INSERT INTO profile (person, school) VALUES (#{arg0}, #{arg1})";)
但现在出现 java.lang.Assertion 错误。 TestTextMessage 是一个包含以下值的类:

@Data
@NoArgs
@EqualsAndHashCode
public class TestTextMessage {
   private long id;
   private String name;
   private int age;
}

目前我这样称呼它:

messageMapper.insertOne(new TestTextMessage(person1), SchoolType.EDENGLEN);

如果我将学校类型移至班级,那么它应该可以工作,但是我如何为学校类型分配值?

java mybatis ibatis
2个回答
5
投票

使用

arg0
arg1

@(Insert("INSERT INTO profile (person, school) VALUES (#{arg0}, #{arg1})")

使用

@Param
为参数命名。

void insertOne(@Param("person")TestTextMessage person, @Param("school") String school)

0
投票

使用

-parameters
选项进行编译,用于将形式参数名称存储到字节码,该选项在 Java 8 中添加到 javacsource

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.13.0</version>
    <configuration>
        <release>${java.release}</release>
        <compilerArgument>-parameters</compilerArgument>
    </configuration>
</plugin>
© www.soinside.com 2019 - 2024. All rights reserved.