视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
mybatis“集合嵌套查询”和“集合嵌套结果”两种方法实现数据库
2020-11-09 14:11:02 责编:小采
文档


两个实体类分别如下:User用户类和Goods商品类。一个用户对应多个商品(一对多) package com.leo.entity;import java.util.List;public class User {private Integer id;private String username;private Integer age;private String address;private ListG

两个实体类分别如下:User用户类和Goods商品类。一个用户对应多个商品(一对多)

package com.leo.entity;

import java.util.List;
public class User {
	private Integer id;
	private String username;
	private Integer age;
	private String address;
	private List goodsList;

	public List getGoodsList() {
	return goodsList;
	}
	public void setGoodsList(List goodsList) {
	this.goodsList = goodsList;
	}
	public Integer getId() {
	return id;
	}
	public void setId(Integer id) {
	this.id = id;
	}
	public String getUsername() {
	return username;
	}
	public void setUsername(String username) {
	this.username = username;
	}
	public Integer getAge() {
	return age;
	}
	public void setAge(Integer age) {
	this.age = age;
	}
	public String getAddress() {
	return address;
	}
	public void setAddress(String address) {
	this.address = address;
	}
	public User() {
	super();
	// TODO Auto-generated constructor stub
	}
	@Override
	public String toString() {
	return "User [id=" + id + ", username=" + username + ", age=" + age
	+ ", address=" + address + ", goodsList=" + goodsList + "]";
	}
	
	
	
	
	
}

Goods商品类
package com.leo.entity;

public class Goods {
	private Integer id;
	private String goodsName;
	private Integer goodsNumber;
	private Integer user_id;
	
	
	
	public Integer getId() {
	return id;
	}
	public void setId(Integer id) {
	this.id = id;
	}
	public String getGoodsName() {
	return goodsName;
	}
	public void setGoodsName(String goodsName) {
	this.goodsName = goodsName;
	}
	public Integer getGoodsNumber() {
	return goodsNumber;
	}
	public void setGoodsNumber(Integer goodsNumber) {
	this.goodsNumber = goodsNumber;
	}
	public Integer getUser_id() {
	return user_id;
	}
	public void setUser_id(Integer user_id) {
	this.user_id = user_id;
	}
	
	
	
	
}

User实体类的mapper映射文件:UserDao.xml
 
 
		
	
	
	
	
	
	
	
		
	
	 

Goods实体类的mapper映射文件:GoodsDao.xml
 

	 
	
	
	 


mabatis的环境配置文件mabatis-config.xml
 
 

	
	
	
	
	
	 
	 
	
	
	
	
  
  
  
  
  
  
  
  
  
  
 
 
 
 
  
 
 
  
测试的servlet(也可以用main函数测试)
package com.leo.servlet;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

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

import com.leo.entity.Goods;
import com.leo.entity.User;
import com.leo.mapper.GoodsDao;
import com.leo.mapper.UserDao;



/**
 * Servlet implementation class MybatisServlet
 */
@WebServlet("/MybatisServlet")
public class MybatisServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	InputStream is = Resources.getResourceAsStream("com/leo/resources/mybatis-config.xml");
	SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
	SqlSession session = factory.openSession();
	
//	UserDao ud = session.getMapper(UserDao.class);
	GoodsDao gd = session.getMapper(GoodsDao.class);

	List goodsList= gd.selectGoodsForUser(1);
	
//	User user = ud.getUserinfoById(1);	
//	System.out.println(user);
//	List goodsList = user.getGoodsList();
	for (Goods goods : goodsList) {
	System.out.println(goods.getId()+" "+ goods.getGoodsName()+" "+goods.getGoodsNumber()+ " "+ goods.getUser_id());
	}
	session.commit();
	session.close();
	
	}
	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	doGet(request, response);
	
	}

}

以上是集合嵌套查询,还有一种方式是集合嵌套结果,这种方式只需要一个实体类文件即可,它是一种级联查询,自动完成的

下面用集合嵌套结果这种方式:

只需要改动UserDao.xml,且只是用这一个映射文件就可以完成

 
 
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
		
	 


希望可以帮到大家,有什么措辞不正确,希望得到指正,希望进步

下载本文
显示全文
专题