Mybatis04_多對多查詢

Mybatis04_多對多查詢

customer表結構:
在這裏插入圖片描述
customer表內容:
在這裏插入圖片描述
goods表結構:
在這裏插入圖片描述
goods表內容:
在這裏插入圖片描述
中間表customer_goods表結構:
在這裏插入圖片描述
中間表customer_goods表內容:
在這裏插入圖片描述
Customer實體:

package com.blu.entity;

import java.util.List;
import lombok.Data;

@Data
public class Customer {
	private long id;
	private String name;
	private List<Goods> goods;
}

Goods實體:

package com.blu.entity;

import java.util.List;
import lombok.Data;

@Data
public class Goods {
	private long id;
	private String name;
	private List<Customer> customers;
}
查詢Customer帶Goods

CustomerRepository接口:

package com.blu.repository;

import com.blu.entity.Customer;

public interface CustomerRepository {
	public Customer findById(long id);
}

CustomerRepository.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="com.blu.repository.CustomerRepository">
	<resultMap id="customerMap" type="com.blu.entity.Customer">
		<id column="cid" property="id"></id>
		<result column="cname" property="name"></result>
		<collection property="goods" ofType="com.blu.entity.Goods">
			<id column="gid" property="id" />
			<result column="gname" property="name" />
		</collection>
	</resultMap>
	<select id="findById" parameterType="long" resultMap="customerMap">
		select c.id cid,c.name cname,g.id gid,g.name gname
		from customer c,goods g,customer_goods cg 
		where c.id = #{id} and cg.cid = c.id and cg.gid = g.id
	</select>
</mapper>

註冊mapper

<mapper resource="com/blu/mapper/CustomerRepository.xml"></mapper>

測試方法:

public class Test {
	public static void main(String[] args) {
		InputStream inputStream = Test.class.getClassLoader().getResourceAsStream("config.xml");
		SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
		SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);
		SqlSession sqlSession = sqlSessionFactory.openSession();
		CustomerRepository customerRepository = sqlSession.getMapper(CustomerRepository.class);
		Customer customer = customerRepository.findById(1L);
		System.out.println(customer);
		sqlSession.close();	
	}
}

結果:

Customer(id=1, name=張三, goods=[Goods(id=1, name=電視, customers=null), Goods(id=3, name=洗衣機, customers=null)])

查詢Goods帶Customer

GoodsRepository 接口:

package com.blu.repository;

import com.blu.entity.Goods;

public interface GoodsRepository {
	public Goods findById(long id);
}

GoodsRepository.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="com.blu.repository.GoodsRepository">
	<resultMap id="goodsMap" type="com.blu.entity.Goods">
		<id column="gid" property="id"></id>
		<result column="gname" property="name"></result>
		<collection property="customers" ofType="com.blu.entity.Customer">
			<id column="cid" property="id" />
			<result column="cname" property="name" />
		</collection>
	</resultMap>
	
	<select id="findById" parameterType="long" resultMap="goodsMap">
		select c.id cid,c.name cname,g.id gid,g.name gname
		from customer c,goods g,customer_goods cg
		where g.id = #{id} and cg.cid = c.id and cg.gid = g.id
	</select>
</mapper>

註冊mapper

<mapper resource="com/blu/mapper/GoodsRepository.xml"></mapper>

測試方法:

public class Test {
	public static void main(String[] args) {
		InputStream inputStream = Test.class.getClassLoader().getResourceAsStream("config.xml");
		SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
		SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);
		SqlSession sqlSession = sqlSessionFactory.openSession();
		GoodsRepository goodsRepository = sqlSession.getMapper(GoodsRepository.class);
		Goods goods = goodsRepository.findById(3L);
		System.out.println(goods);
		sqlSession.close();
	}
}

結果:

Goods(id=3, name=洗衣機, customers=[Customer(id=1, name=張三, goods=null), Customer(id=3, name=李華, goods=null)])
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章