栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java工程mybatis实现多表查询过程详解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java工程mybatis实现多表查询过程详解

1、先做一些准备工作

我们首先在创建一个 java 工程,还需要创建两张表,它们分别是用户表 user,和帖子表 post,一个户用户可以有多个帖子。
user表的结构和数据:

-- ----------------------------
-- Table structure for `user`
-- ----------------------------
CREATE TABLE `user` (
 `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
 `username` varchar(64) NOT NULL DEFAULT '',
 `mobile` int(10) unsigned NOT NULL DEFAULT '0',
 `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
 PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
 
-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES ('1', 'yiibai', '100', '2015-09-23 20:11:23');

帖子表 post 的结构和数据:

-- ----------------------------
-- Table structure for `post`
-- ----------------------------
CREATE TABLE `post` (
 `post_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
 `userid` int(10) unsigned NOT NULL,
 `title` varchar(254) NOT NULL DEFAULT '',
 `content` text,
 `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
 PRIMARY KEY (`post_id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of post
-- ----------------------------
INSERT INTO `post` VALUES ('1', '1', 'MyBatis关联数据查询', '在实际项目中,经常使用关联表的查询,比如:多对一,一对多等。这些查询是如何处理的呢,这一讲就讲这个问题。我们首先创建一个 post 表,并初始化数据.', '2015-09-23 21:40:17');
INSERT INTO `post` VALUES ('2', '1', 'MyBatis开发环境搭建', '为了方便学习,这里直接建立java 工程,但一般都是开发 Web 项目。', '2015-09-23 21:42:14');
INSERT INTO `post` VALUES ('3', '2', '这个是别人发的', 'content,内容...', '0000-00-00 00:00:00');

从上面应该看出,这几个帖子对应的 userid 都是1,所以需要用户表 user 里面有 id=1 的数据。可以修改成满足自己条件的数据,按照orm的规则,表肯定需要一个对象与之对应,所以我们增加一个 Post 类。

2、创建表对应的 JavaBean 对象

这个例子中,我们需要在包 com.yiibai.pojo 下创建两个类,它们分别是: User.java 和 Post.java,我们一个一个地来看它们的代码,User.java 类的代码如下:

package com.yiibai.pojo;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

public class User implements Serializable{
  private int id;
  private String username;
  private String mobile;
  private List posts;

  public int getId() {
    return id;
  }

  public void setId(int id) {
    this.id = id;
  }

  public String getUsername() {
    return username;
  }

  public void setUsername(String username) {
    this.username = username;
  }

  public String getMobile() {
    return mobile;
  }

  public void setMobile(String mobile) {
    this.mobile = mobile;
  }

  public List getPosts() {
    return posts;
  }
  public void setPosts(List posts) {
    this.posts = posts;
  }

  @Override
  public String toString() {
    return "User [id=" + id + ", name=" + username + "]";
  }

}

package com.yiibai.pojo;
 
import java.io.Serializable;
 
public class Post implements Serializable{
  private int id;
  private User user;
  private String title;
  private String content;
 
  public int getId() {
    return id;
  }
 
  public void setId(int id) {
    this.id = id;
  }
 
  public User getUser() {
    return user;
  }
 
  public void setUser(User user) {
    this.user = user;
  }
 
  public String getTitle() {
    return title;
  }
 
  public void setTitle(String title) {
    this.title = title;
  }
 
  public String getContent() {
    return content;
  }
 
  public void setContent(String content) {
    this.content = content;
  }
}

3、配置文件

在这一章节中,要用到的配置文件有两个,一个是 mybatis 的主配置文件:src/config/Configure.xml 和 User.java对应的配置文件 User.xml,我们先来看看 src/config/Configure.xml,其详细配置信息如下:




  
    
    
  

  
    
      
      
 
 
 
 
      
    
  

  
    
    
  

用于定义一个 JavaBean 类的别名,如将 com.yiibai.pojo.User 简写为 User,可以认为 com.yiibai.pojo.User 就是 User,User 就是 com.yiibai.pojo.User 。

另外一个配置文件 User.xml 的内容如下:





  
  
  
    
    
    
    
        
      
       
    
  

  
    SELECT u.*,p.*
    FROM user u, post p
    WHERe u.id=p.userid AND id=#{user_id} 
 

4、测试程序运行

到这里,整个工作准备得已经差不多了,我们创建一个主类来测试上面程序,在 src 下创建一个 Main.java,代码如下:

import java.io.Reader;
import java.text.MessageFormat;
import java.util.List;
 
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
 
import com.yiibai.pojo.Post;
import com.yiibai.pojo.User;
 
public class Main {
  private static SqlSessionFactory sqlSessionFactory;
  private static Reader reader;
 
  static {
    try {
      reader = Resources.getResourceAsReader("config/Configure.xml");
      sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
 
  public static SqlSessionFactory getSession() {
    return sqlSessionFactory;
  }
 
  
  public static void main(String[] args) {
    // TODO Auto-generated method stub
    SqlSession session = sqlSessionFactory.openSession();
    try {
      int userid = 1;
      User user = session.selectOne("com.yiibai.userMaper.getUser", 1);
System.out.println("username: "+user.getUsername()+",");
    List posts = user.getPosts(); 
    for(Post p : posts) {
      System.out.println("Title:" + p.getTitle());
      System.out.println("Content:" + p.getContent()); 
    } 
     } finally {
      session.close();
     }
  }
 
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/133617.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号