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