mybatis多对一查询

建表 

建好的表和字段如图:

Category表:



product表:

实体类 Category.java


package cn.pojo;

import java.util.List;

public class Category {

	private int id;
	private String name;
	
	public int getId() {
		return id;
	}

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

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	@Override
	public String toString() {
		return "Category [id=" + id + ", name=" + name+"]"  ;
	}	
}

Product实体类:

在多的这端添加一个一的类型的属性(即Category category)

package cn.pojo;

public class Product {
	private int id;
	private String name;
	private String price;
	private Category category;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPrice() {
		return price;
	}
	public void setPrice(String price) {
		this.price = price;
	}
	
	public Category getCategory() {
		return category;
	}
	public void setCategory(Category category) {
		this.category = category;
	}
	@Override
	public String toString() {
		return "Product [id=" + id + ", name=" + name + ", price=" + price + "]";
	}
}

编写Product.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.pojo">
	<resultMap type="Product" id="moreToone">
		<id column="pid" property="id" />
		<result column="pname" property="name" />
		<result column="price" property="price" />
		
		 <!--assocication可以指定联合的JavaBean对象 
                property=: 指定哪个属性是联合的对象
                javaType: 指定这个属性对象的类型
                -->
		<association property="category" javaType="Category">
			<id column="cid" property="id" />
			<result column="cname" property="name" />
		</association>
	</resultMap>
	<select id="listProduct" resultMap="moreToone">
		select c.*,p.*,
		c.id cid,
		c.name cname,
		p.id pid,
		p.name pname,
		price from Category c left join Product p on c.id=p.cid
	</select>
</mapper>

测试类:

package cn.test;

import java.io.IOException;
import java.io.InputStream;
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 cn.pojo.Product;

public class MoreToOne {

	public static void main(String[] args) throws IOException {
		String r = "mybatis-cfg.xml";
		InputStream input = Resources.getResourceAsStream(r);
		SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(input);
		SqlSession session = sf.openSession();
		List<Product> product = session.selectList("listProduct");
		for (Product p : product) {
			System.out.println(p + "  对应分类是\t" + p.getCategory());
		}
		session.commit();
		session.close();
	}
}

测试结果:



猜你喜欢

转载自blog.csdn.net/qq_38313537/article/details/80601661