建表
建好的表和字段如图:
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(); } }
测试结果: