1.创建Maven项目,项目名称mybatisdemo1,目录结构如图所示

MyBatis-多对一查询_第1张图片


2.pom.xml中配置内容如下


  4.0.0
  com.mycompany
  mybatisdemo1
  0.0.1-SNAPSHOT
  
  
  
  	
	
	    org.apache.logging.log4j
	    log4j-core
	    2.7
	
	
	
	
	    org.mybatis
	    mybatis
	    3.4.1
	
	
	
	
	    mysql
	    mysql-connector-java
	    5.1.39
	
	
	
	
	    junit
	    junit
	    4.11
	
	
	
  
  
  


3.在src/main/java目录创建实体类Forum,包名(com.mycompany.beans),目录结构如下

MyBatis-多对一查询_第2张图片


4.实体类Forum的内容如下

package com.mycompany.beans;

public class Forum {
	private Integer fid;
	private String name;
	
	public Forum() {
		super();
	}
	public Forum(String name) {
		super();
		this.name = name;
	}
	public Forum(Integer fid, String name) {
		super();
		this.fid = fid;
		this.name = name;
	}
	public Integer getFid() {
		return fid;
	}
	public void setFid(Integer fid) {
		this.fid = fid;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
}


5.在src/main/java目录创建实体类Forumpost,包名(com.mycompany.beans),目录结构如下

MyBatis-多对一查询_第3张图片


6.实体类Forumpost的内容如下

package com.mycompany.beans;

public class Forumpost {
	private Integer pid;
	private String subject;
	private Forum forum;
	
	public Forumpost() {
		super();
	}
	public Forumpost(String subject, Forum forum) {
		super();
		this.subject = subject;
		this.forum = forum;
	}
	public Forumpost(Integer pid, String subject, Forum forum) {
		super();
		this.pid = pid;
		this.subject = subject;
		this.forum = forum;
	}
	public Integer getPid() {
		return pid;
	}
	public void setPid(Integer pid) {
		this.pid = pid;
	}
	public String getSubject() {
		return subject;
	}
	public void setSubject(String subject) {
		this.subject = subject;
	}
	public Forum getForum() {
		return forum;
	}
	public void setForum(Forum forum) {
		this.forum = forum;
	}
	@Override
	public String toString() {
		return "[pid="+pid+",subject="+subject+",
		forum[fid="+forum.getFid()+",name="+forum.getName()+"]]";
	}
	
}


7.在src/main/java目录创建接口ForumpostMapper,包名(com.mycompany.mapper),目录结构如下

MyBatis-多对一查询_第4张图片


8.接口ForumpostMapper的内容如下

package com.mycompany.mapper;

import java.util.List;

import com.mycompany.beans.Forumpost;

public interface ForumpostMapper {
	
	/**
	 * 根据分类编号查询所有的话题信息
	 * @return
	 * @throws Exception
	 */
	public List selectAllByFid(int fid) throws Exception;
}


9.在src/main/java目录创建映射文件ForumpostMapper.xml,包名(com.mycompany.mapper),目录结构如下


10.映射文件ForumpostMapper.xml的内容如下




	
	
	
		select 
			f.fid,f.name,p.pid,p.subject 
		from
			forum f,forumpost p
		where
			f.fid  = p.fid
		and
			f.fid = #{fid}
	
	
	
		
		
		
		
			
			
		
	


11.在src/main/resources下创建mysql.properties属性文件,目录结构如下

MyBatis-多对一查询_第5张图片


12.mysql.properties属性文件的内容如下

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test
jdbc.username=root
jdbc.password=


13.在src/main/resources下创建mybatis.cfg.xml配置文件,目录结构如下

MyBatis-多对一查询_第6张图片


14.mybatis.cfg.xml配置文件的内容如下




	
  	
  	
  	
  		
  	
  	
  	
    
		
			
            
            
            
            
            
            
            	
                
                
                
            
        
      
     
     
     	
     
     


15.在src/main/java下创建工具类DBUtils,包名(com.mycompany.util)目录结构如下

MyBatis-多对一查询_第7张图片


16.工具类DBUtils的内容如下

package com.mycompany.util;

import java.io.IOException;
import java.io.Reader;


import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class DBUtils {
	public static SqlSessionFactory sessionFactory;
	
	static{
		try {
			Reader reader = Resources.getResourceAsReader("mybatis.cfg.xml");
			sessionFactory = new SqlSessionFactoryBuilder().build(reader);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	public static SqlSession getSession(){
		return sessionFactory.openSession();
	}
}


17.在src/main/java下创建业务类ForumpostService,包名(com.mycompany.service)目录结构如下

MyBatis-多对一查询_第8张图片


18.业务类ForumpostService的内容如下

package com.mycompany.service;

import java.util.List;

import org.apache.ibatis.session.SqlSession;

import com.mycompany.beans.Forumpost;
import com.mycompany.mapper.ForumpostMapper;
import com.mycompany.util.DBUtils;

public class ForumpostService {
	
	/**
	 * 查询所有信息
	 */
	public void selectAll(){
		SqlSession session = DBUtils.getSession();
		ForumpostMapper mapper = session.getMapper(ForumpostMapper.class);
		try {
			List forumposts = mapper.selectAllByFid(12);
			for (Forumpost forumpost : forumposts) {
				System.out.println(forumpost);
			}
			session.commit();
		} catch (Exception e) {
			e.printStackTrace();
			session.rollback();
		}
	}
}


19.在src/test/java下创建测试类ForumpostServiceTest,包名(com.mycompany.service),目录结构如下

MyBatis-多对一查询_第9张图片


20.测试类ForumpostServiceTest的内容如下

package com.mycompany.service;

import org.junit.Test;

public class ForumpostServiceTest {

	/**
	 * 测试查询所有信息
	 */
	@Test
	public void selectAll(){
		ForumpostService forumpostService = new ForumpostService();
		forumpostService.selectAll();
	}
}

MyBatis-多对一查询_第10张图片