当前位置: 首页 > 知识库问答 >
问题:

QueryBuilder类中的Mybatis参数映射

杜阳泽
2023-03-14

我对使用mybatis作为ORM工具相当满意。但是我不能理解MyBatis中参数映射是如何工作的。

假设我定义了一个mybatis映射器接口,该接口有一个获取用户详细信息的方法。

我定义了我的QueryBuilder类,其中包含selectQuery

public interface UserMapper {

    @SelectProvider(type = UserQueryBuilder.class, method = "getUserId")
    Long getUserId(@Param("first") String firstName, @Param("last") String lastName, @Param("location") String location);

}


public class UserQueryBuilder(){

    public String getUserId(String firstName, String lastName, String location) {
        return new SQL() {{
            SELECT("USER_TABLE.USER_ID");
            FROM("USER_TABLE");
            WHERE("USER_TABLE.FIRST_NAME" + " = #{first}");
            WHERE("USER_TABLE.LAST_NAME" + " = #{last}");
            WHERE("USER_TABLE.LOCATION" + " = #{location}");

        }}.toString();
    }

}

共有1个答案

严言
2023-03-14

重要的是UserQueryBuilder不能获取UserMapper接口中定义的参数。

有几个组件参与查询执行:

  1. 映射器的客户端
  2. 映射器接口
  3. 查询生成器
  4. Spring-Mybatis库
  5. Mybatis库
    null
 类似资料:
  • 我正在学习如何使用Mybatis。老实说,我很喜欢这个框架。它很容易使用,我对它很满意,因为我可以使用它的sql命令:)我使用MyBatis 3.4.2和PostgreSQL数据库。 例如,我喜欢在插入之前使用注释执行查询是多么容易。如果我在接口方法之前添加一些注释,那么数据映射就像一个迷人的例子,比如:。 我不喜欢的(我希望你能把我引向正确的方向)有以下几点: 使用JDBC时,我需要做到以下几点

  • 在一个实体中有一个名为'car type'的列表类型属性,该实体如下所示: 我在调用DAO接口之前给它赋了一个值,就像:

  • 我得到了一个错误,输入类myPackage。MapperRegistry不知道MyClass。 我成功地获取了一个会话,在调试时,我可以看到它似乎配置正确,因此接口关联似乎正在工作;因此,我相信这个错误不同于堆栈溢出建议的问题。 我是myBatis的新手,但从文档中我了解到,以下是使resultType自动映射工作所需的全部内容。 更新:按xml文件而不是按类映射映射映射器资源时也会发生这种情况。

  • 这里是界面 错误:嵌套异常为org.apache.ibatis.binding.bindingException:找不到参数“old pageno”。可用参数为[param,param1]

  • 我使用了Oracle过程的out参数。out参数仅返回一个对象,该对象具有Oracle类型的嵌套对象。out pareemter应该是java bean TestEntity的精确映射,但mybatis说结果不包含TestEntity 请帮忙 Java bean: org.mybatis.spring.mybatisSystemException:嵌套异常为org.apache.ibatis.ex