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

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]

  • 主要内容:XML实现映射器,注解实现映射器,MyBatis 映射器的主要元素映射器是 MyBatis 中最重要的文件,文件中包含一组 SQL 语句(例如查询、添加、删除、修改),这些语句称为映射语句或映射 SQL 语句。 映射器由 Java 接口和 XML 文件(或注解)共同组成,它的作用如下。 定义参数类型 配置缓存 提供 SQL 语句和动态 SQL 定义查询结果和 POJO 的映射关系 映射器有以下两种实现方式。 通过 XML 文件方式实现,比如我们在 mybatis