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

关联/集合的Mybatis嵌套Select不工作

米修平
2023-03-14

我正在尝试用结果映射部分测试MyBatis的用户手册。Mybatis版本:Mybatis-3.1.0

<setting name="lazyLoadingEnabled" value="false" />


<resultMap id="blogMap" type="blog">
<constructor>
    <idArg column="id" javaType="_long" />
    <arg column="title" javaType="String" />
</constructor>
<association property="author" javaType="author" column = "author_id"           select = "getAuthor"/>
</resultMap>

<select id="getBlog" parameterType="Long" resultMap="blogMap">
    select
    b.id,
    b.title
    from
    blog b
    where b.id = #{id} 
</select>

<select id="getAuthor" parameterType="Long" resultType="author">
    select
    a.id ,
    a.username,
    a.password
    from author a
where a.id = #{id} 
</select>
public class Blog {
private long id;
private String title;

private Author author;
private List<Post> posts;
      //getter, setters and the constructor

public class Author {
private long id;
private String username;
private String password;
private String email;
private String bio;
private String favouriteSection;
   BlogMapperInterface bm = context.getBean("blogMapper",BlogMapperInterface.class);
   Blog b = bm.getBlog(1);
[10/05/12 06:45:19:019 SGT] DEBUG datasource.DataSourceUtils: Fetching JDBC Connection from DataSource
[10/05/12 06:45:19:019 SGT] DEBUG BlogMapperInterface.getBlog: ooo Using Connection        [jdbc:oracle:thin:@*, UserName=*, Oracle JDBC driver]
[10/05/12 06:45:19:019 SGT] DEBUG BlogMapperInterface.getBlog: ==>  Preparing: select b.id, b.title from blog b where b.id = ? 
[10/05/12 06:45:19:019 SGT] DEBUG BlogMapperInterface.getBlog: ==> Parameters: 1(Long)
[10/05/12 06:45:19:019 SGT] DEBUG BlogMapperInterface.getBlog: <==    Columns: ID, TITLE
[10/05/12 06:45:19:019 SGT] DEBUG BlogMapperInterface.getBlog: <==        Row: 1, first blog
[10/05/12 06:45:19:019 SGT] DEBUG datasource.DataSourceUtils: Returning JDBC Connection to DataSource

为什么没有调用getAuthor?难道不应该在我调用getBlog()时调用它吗?

共有1个答案

养星汉
2023-03-14

因为从getblog得到的结果中没有author_id列。

尝试:

 select
    b.id,
    b.title,
    b.author_id
    from
    blog b
    where b.id = #{id} 
 类似资料:
  • 问题内容: 我在Scala和Java之间遇到编译问题。 我的Java代码需要一个 我的scala代码有一个 我收到编译错误: 似乎scala.collection.JavaConversions不适用于嵌套集合,即使Vector可以隐式转换为Iterable。除了遍历scala集合并手动进行转换之外,我还能做些什么使这些类型起作用? 问题答案: 应该弃用恕我直言。您最好使用来明确说明转换的时间和地

  • 我有三个实体主题、主题和类别。在检索包含主题和主题的所有类别时,如何预取每个实体的id和名称列?我不需要其他字段,因为它会影响性能。

  • 我试图提供一种方法,在一个模型中生成一个新对象(列表),在另一个模型中使用has_many关系(通过分组)生成一个新的关联对象(项目)。我能够让表单工作正常,但无法弄清楚为了正确完成创建过程,我缺少什么。 Rails v.5.1.2,Ruby v.2.4.1 lists_controller.rb items_controller.rb list.rb模型 item.rb模型 grouping.r

  • 本文向大家介绍Python 语言嵌套集合,包括了Python 语言嵌套集合的使用技巧和注意事项,需要的朋友参考一下 示例 导致: 而是使用frozenset:            

  • 假设我有一个包含集合的对象,所述集合上的每个元素都包含一个集合,每个集合都包含一个集合。 我想在最深的对象上迭代,并对其应用相同的代码。 命令式的方法是微不足道的,但有没有一种方法来完成这一切? 我可以看到如何从最深的循环中生成lambda: 但我能做得更多吗?

  • 我试图理解新的Java8流,并且花了好几天的时间在Java8流中的集合上传输嵌套的foreach循环。 是否可以重构以下嵌套的foreach循环,包括Java-8-Streams中的if条件? 如果是,它会是什么样子。 非常感谢你的帮助。 溴