我正在尝试实现以下 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);
如果我将学校类型移至班级,那么它应该可以工作,但是我如何为学校类型分配值?
使用
arg0
和 arg1
@(Insert("INSERT INTO profile (person, school) VALUES (#{arg0}, #{arg1})")
或
使用
@Param
为参数命名。
void insertOne(@Param("person")TestTextMessage person, @Param("school") String school)
使用
-parameters
选项进行编译,用于将形式参数名称存储到字节码,该选项在 Java 8 中添加到 javac(source)
<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>