微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在春季将 mybatis mapper 从 Java 迁移到 Kotlin?

如何解决如何在春季将 mybatis mapper 从 Java 迁移到 Kotlin?

我有 MyBatis ORM 的 spring-boot 应用程序。在java中我写像

@Mapper
@Repository
public interface FooMapper {

    @SelectProvider(type = sqlProviderAdapter.class,method = "select")
    @Results(id = "resultFoo",value = {
            @Result(property = "rowId",column = "ROW_ID"),@Result(property = "created",column = "CREATED"),@Result(property = "lastUpdated",column = "LAST_UPD"),@Result(property = "fooId",column = "FOO_ID"),})
    Foo findBy(SelectStatementProvider selectStatement);

    @SelectProvider(type = sqlProviderAdapter.class,method = "select")
    @Results(value = {
            @Result(property = "rowId",})
    List<Foo> findListBy(SelectStatementProvider selectStatement);

    @SelectProvider(type = sqlProviderAdapter.class,method = "select")
    @Results(value = {
            @Result(property = "fooId",column = "FOO_ID")
    })
    List<String> findFooListBy(SelectStatementProvider selectStatement);

    @InsertProvider(type = sqlProviderAdapter.class,method = "insert")
    @Options(useGeneratedKeys = true,keyProperty = "record.rowId",keyColumn = "row_id")
    int insert(InsertStatementProvider<Foo> insertStatement);

    @UpdateProvider(type = sqlProviderAdapter.class,method = "update")
    int update(UpdateStatementProvider updateStatement);
}

这很好用!

但我需要将所有应用程序转换为 Kotlin。 我尝试了以下代码

@Mapper
@Repository
interface FooMapper {
    @SelectProvider(type = sqlProviderAdapter::class,method = "select")
    @Results(
        id = "resultReferralActivation",value = [Result(property = "rowId",Result(
            property = "created",column = "CREATED"
        ),Result(property = "lastUpdated",Result(
            property = "fooId",column = "FOO_ID"
        )]
    )
    fun findBy(selectStatement: SelectStatementProvider?): Foo?

    @SelectProvider(type = sqlProviderAdapter::class,method = "select")
    @Results(
        value = [Result(property = "rowId",column = "FOO_ID"
        )]
    )
    fun findListBy(selectStatement: SelectStatementProvider?): List<Foo?>?

    @SelectProvider(type = sqlProviderAdapter::class,method = "select")
    @Results(value = [Result(property = "fooId",column = "FOO_ID")])
    fun findFooListBy(selectStatement: InsertStatementProvider?): List<String?>?

    @InsertProvider(type = sqlProviderAdapter::class,keyColumn = "row_id")
    fun insert(insertStatement: InsertStatementProvider<Foo?>?): Int

    @UpdateProvider(type = sqlProviderAdapter::class,method = "update")
    fun update(updateStatement: UpdateStatementProvider?): Int
}

但它不起作用。如果我在 java 或 kotlin 类应用程序中尝试 awtowired FooMapper 时失败,并显示如下消息:can't find bean FooMapper。如果我评论了我的自动装配尝试,应用程序就会启动,但是当我检查 spring-bean-list 时,我看到 bean FooMapper 不存在。

如何将我的 Java 映射器转换为 Konlin?

感谢您的帮助!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?