gpt4 book ai didi

java - 为带注释的 MyBatis 插入指定类型处理程序

转载 作者:行者123 更新时间:2023-11-29 14:02:41 26 4
gpt4 key购买 nike

我正在尝试使用 MyBatis 创建带注释的插入语句,其中类型处理程序在注释中指定。

例如,在选择查询中,我们可以像这样指定类型处理程序:

@Results({
@Result(column = "strings", property = "strings", typeHandler = StringArrayTypeHandler.class)
})
@Select("SELECT * FROM ${name} ORDER BY id ASC;")
List<StringObject> getStringObjects(@Param("name") String name);

但是,插入查询似乎不可能,因为 @Results 注释仅适用于 @Select 查询。

目前,我的解决方法是将类型处理程序指定为查询字符串的一部分,如下所示:

@Options(useGeneratedKeys = true)
@Insert({"INSERT INTO ${name} (text, value, strings) VALUES (#{obj.text}, #{obj.value}, #{obj.strings, typeHandler=com.mypackage.typehandler.StringArrayTypeHandler});"})
void insertStringObject(@Param("obj") SenticConcept concept, @Param("name") String version);

我的问题是,我们能否在注释中指定类型处理程序类而不是作为查询字符串的一部分?

最佳答案

这是不可能的。

结果映射使用列名作为键,因为可以使用列名来标识结果集中的列值,即mybatis可以通过列名获取某列的值。因此它可以使用映射配置(例如 typeHandler)来处理该列中的值。

JDBC 中查询的输入参数只能通过参数的索引来识别。原则上,可以根据参数的索引实现一个指定 typeHandler 的注解,但这很容易出错,因为查询的更改可能会导致参数索引的更改(即可能是在 mybatis 中没有完成的原因)。

关于java - 为带注释的 MyBatis 插入指定类型处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56148886/

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