当前位置: 代码迷 >> Java Web开发 >> 帮忙看下mybatis查出的数据替什么是一条
  详细解决方案

帮忙看下mybatis查出的数据替什么是一条

热度:447   发布时间:2016-04-10 22:53:44.0
帮忙看下mybatis查出的数据为什么是一条
test_user表:

id username userage useraddress
1    wjf       29       通州
2    tbf       30       湖北
3    xxx       23       xxxxxx

关联:
test_article表:

id   userid   title       content
1     1     test_title   test_content
2     1     test_title2  test_content2
3     1     test_title3  test_content3
4     1     test_title4  test_content4

User类:

public class User {

private int id;
private String username;
private int userage;
private String useraddress ;
        get和set方法...
}

Article类:

public class Article {

    private int id;
    private User user;
    private String title;
    private String content;
    get和set方法...
}

目的是查出1号用户对应的article:
User.xml配置:

     <resultMap id="resultUserArticleList" type="Article">
       <id property="id" column="id" />
         <result property="title" column="title" />
         <result property="content" column="content" />
         
         <association property="user" javaType="User">
             <id property="id" column="id" />
             <result property="username" column="userName" />
             <result property="useraddress" column="userAddress" />             
         </association>             
     </resultMap>
     
     <select id="getUserArticles" parameterType="int" resultMap="resultUserArticleList">
      select u.id,u.username,u.useraddress,a.id,a.title,a.content from test_user u ,test_article a 
               where u.id=a.userid and u.id=#{id}
     </select>

接口:

public interface IUserOperation {
public List<Article> getUserArticles(int id);

}

测试类:
public class Test{

   public void getUserArticles(int userid){
        SqlSession session = sqlSessionFactory.openSession();
        try {
            IUserOperation userOperation=session.getMapper(IUserOperation.class);
            List<Article> articles = userOperation.getUserArticles(userid);
            System.out.println(articles.size());
        } finally {
            session.close();
        }
    }

    public static void main(String[] args) {
          Test testUser=new Test();
testUser.getUserArticles(1);
    }

}
为什么size为1?刚学mybatis,不懂,sql里面查询出来是4条,麻烦解释下
------解决方案--------------------
看着 应该没有什么问题...会不会是 数据库 不一样啊
------解决方案--------------------
 List<Article> articles = userOperation.getUserArticles(userid);

这个getUserArticles 有没有做什么处理?
------解决方案--------------------
出了问题,找出原因很重要。我一下子也看不出来问题所在,根据经验,使用association这个元素很容易出错,建议你在resultMap中先换一种写法,不要用association。修改测试一下,如果成功的话,就基本可以去顶是association的问题了,之后查一下association详细资料,应该能解决。如果不是association的问题,就调查一下配置文件等等,总能够解决的。
------解决方案--------------------
引用:
  相关解决方案