一、
1、一对多
使用逆向生成工具生成t_hibernate_order、t_hibernate_order_item
这两张表对应的model与mapper
1.1 OrderVo
1 package com.jy.model.vo;
2
3 import com.jy.model.Order;
4 import com.jy.model.OrderItem;
5
6 import java.util.ArrayList;
7 import java.util.List;
8
9 public class OrderVo extends Order {
10
11 private List orderItems = new ArrayList<>();
12
13 public List getOrderItems() {
14 return orderItems;
15 }
16
17 public void setOrderItems(List orderItems) {
18 this.orderItems = orderItems;
19 }
20 }
1.2 OrderItemVo
1 package com.jy.model.vo;
2
3 import com.jy.model.Order;
4 import com.jy.model.OrderItem;
5
6 public class OrderItemVo extends OrderItem {
7 private Order order;
8
9 public Order getOrder() {
10 return order;
11 }
12
13 public void setOrder(Order order) {
14 this.order = order;
15 }
16 }
1.3 OrderMapper.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 order_id, order_no
25
26
32
33 delete from t_hibernate_order
34 where order_id = #{orderId,jdbcType=INTEGER}
35
36
37 insert into t_hibernate_order (order_id, order_no)
38 values (#{orderId,jdbcType=INTEGER}, #{orderNo,jdbcType=VARCHAR})
39
40
41 insert into t_hibernate_order
42
43
44 order_id,
45
46
47 order_no,
48
49
50
51
52 #{orderId,jdbcType=INTEGER},
53
54
55 #{orderNo,jdbcType=VARCHAR},
56
57
58
59
60 update t_hibernate_order
61
62
63 order_no = #{orderNo,jdbcType=VARCHAR},
64
65
66 where order_id = #{orderId,jdbcType=INTEGER}
67
68
69 update t_hibernate_order
70 set order_no = #{orderNo,jdbcType=VARCHAR}
71 where order_id = #{orderId,jdbcType=INTEGER}
72
73
74
75
79
80
81
1.4 OrderMapper
1 package com.jy.mapper;
2
3 import com.jy.model.Order;
4 import com.jy.model.vo.OrderVo;
5 import org.apache.ibatis.annotations.Param;
6 import org.springframework.stereotype.Repository;
7
8 import java.util.List;
9
10 @Repository
11 public interface OrderMapper {
12 int deleteByPrimaryKey(Integer orderId);
13
14 int insert(Order record);
15
16 int insertSelective(Order record);
17
18 Order selectByPrimaryKey(Integer orderId);
19
20 int updateByPrimaryKeySelective(Order record);
21
22 int updateByPrimaryKey(Order record);
23
24 //通过一个订单id,查询出订单信息的同时,查询所有的订单项
25 List selectByOrderId(@Param("orderId") Integer orderId);
26
27 }
1.5 OrderItemMapper.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 order_item_id, product_id, quantity, oid
28
29
35
36 delete from t_hibernate_order_item
37 where order_item_id = #{orderItemId,jdbcType=INTEGER}
38
39
40 insert into t_hibernate_order_item (order_item_id, product_id, quantity,
41 oid)
42 values (#{orderItemId,jdbcType=INTEGER}, #{productId,jdbcType=INTEGER}, #{quantity,jdbcType=INTEGER},
43 #{oid,jdbcType=INTEGER})
44
45
46 insert into t_hibernate_order_item
47
48
49 order_item_id,
50
51
52 product_id,
53
54
55 quantity,
56
57
58 oid,
59
60
61
62
63 #{orderItemId,jdbcType=INTEGER},
64
65
66 #{productId,jdbcType=INTEGER},
67
68
69 #{quantity,jdbcType=INTEGER},
70
71
72 #{oid,jdbcType=INTEGER},
73
74
75
76
77 update t_hibernate_order_item
78
79
80 product_id = #{productId,jdbcType=INTEGER},
81
82
83 quantity = #{quantity,jdbcType=INTEGER},
84
85
86 oid = #{oid,jdbcType=INTEGER},
87
88
89 where order_item_id = #{orderItemId,jdbcType=INTEGER}
90
91
92 update t_hibernate_order_item
93 set product_id = #{productId,jdbcType=INTEGER},
94 quantity = #{quantity,jdbcType=INTEGER},
95 oid = #{oid,jdbcType=INTEGER}
96 where order_item_id = #{orderItemId,jdbcType=INTEGER}
97
98
99
100
104
105
106
107
1.6 OrderItemMapper
1 package com.jy.mapper;
2
3 import com.jy.model.OrderItem;
4 import com.jy.model.vo.OrderItemVo;
5 import org.apache.ibatis.annotations.Param;
6 import org.springframework.stereotype.Repository;
7
8 import java.util.List;
9
10 @Repository
11 public interface OrderItemMapper {
12 int deleteByPrimaryKey(Integer orderItemId);
13
14 int insert(OrderItem record);
15
16 int insertSelective(OrderItem record);
17
18 OrderItem selectByPrimaryKey(Integer orderItemId);
19
20 int updateByPrimaryKeySelective(OrderItem record);
21
22 int updateByPrimaryKey(OrderItem record);
23
24 //通过一个订单项id,查询出订单项信息的同时,查询所所属的订单
25 List selectByOrderItemId(@Param("orderItemId") Integer orderItemId);
26
27 }
Service层
1.7 OneToManyService
1 package com.jy.service;
2
3 import com.jy.model.vo.OrderItemVo;
4 import com.jy.model.vo.OrderVo;
5 import org.apache.ibatis.annotations.Param;
6
7 import java.util.List;
8
9 public interface OneToManyService {
10
11 //通过一个订单项id,查询出订单项信息的同时,查询所所属的订单
12 List selectByOrderItemId(Integer orderItemId);
13
14 //通过一个订单id,查询出订单信息的同时,查询所有的订单项
15 List selectByOrderId( Integer orderId);
16
17 }
Service实现类
1.8 OneToManyServiceImpl
1 package com.jy.service.impl;
2
3 import com.jy.mapper.OrderItemMapper;
4 import com.jy.mapper.OrderMapper;
5 import com.jy.model.vo.OrderItemVo;
6 import com.jy.model.vo.OrderVo;
7 import com.jy.service.OneToManyService;
8 import org.springframework.beans.factory.annotation.Autowired;
9 import org.springframework.stereotype.Service;
10
11 import java.util.List;
12
13 @Service
14 public class OneToManyServiceImpl implements OneToManyService {
15 @Autowired
16 private OrderMapper orderMapper;
17 @Autowired
18 private OrderItemMapper orderItemMapper;
19 @Override
20 public List selectByOrderItemId(Integer orderItemId) {
21 return orderItemMapper.selectByOrderItemId(orderItemId);
22 }
23
24 @Override
25 public List selectByOrderId(Integer orderId) {
26 return orderMapper.selectByOrderId(orderId);
27 }
28 }
Test测试层代码
1.9 OneToManyServiceImplTest
1 package com.jy.service.impl;
2
3 import com.jy.SpringBaseTest;
4 import com.jy.model.OrderItem;
5 import com.jy.model.vo.OrderItemVo;
6 import com.jy.model.vo.OrderVo;
7 import com.jy.service.OneToManyService;
8 import org.junit.Test;
9 import org.junit.runner.RunWith;
10 import org.springframework.beans.factory.annotation.Autowired;
11
12 import java.util.List;
13
14 import static org.junit.Assert.*;
15
16 public class OneToManyServiceImplTest extends SpringBaseTest {
17
18 @Autowired
19 private OneToManyService oneToManyService;
20 @Test
21 public void selectByOrderItemId() {
22 List orderItemVos = oneToManyService.selectByOrderItemId(36);
23 OrderItemVo orderItemVo = orderItemVos.get(0);
24 //此订单项的信息
25 System.out.println(orderItemVo);
26 //此订单项所对应的订单
27 System.out.println(orderItemVo.getOrder());
28 }
29
30 @Test
31 public void selectByOrderId() {
32
33 List orderVos = oneToManyService.selectByOrderId(8);
34 OrderVo orderVo = orderVos.get(0);
35 System.out.println(orderVo);
36 System.out.println(orderVos.size());
37 for (OrderItem orderItem : orderVo.getOrderItems()) {
38 System.out.println(orderItem);
39 }
40
41 }
42 }
二、多对多
使用逆向生成工具生成t_hibernate_book、t_hibernate_book_category、t_hibernate_category 这几张表对应的model与mapper
2.1 HbookVo
1 package com.jy.model.vo;
2
3 import com.jy.model.Category;
4 import com.jy.model.HBook;
5
6 import java.util.ArrayList;
7 import java.util.List;
8
9 public class HbookVo extends HBook {
10 private List categories = new ArrayList<>();
11
12 public List getCategories() {
13 return categories;
14 }
15
16 public void setCategories(List categories) {
17 this.categories = categories;
18 }
19 }
2.2 CategoryVo
package com.jy.model.vo;
import com.jy.model.Category;
import com.jy.model.HBook;
import java.util.ArrayList;
import java.util.List;
public class CategoryVo extends Category {
private List hBooks = new ArrayList<>();
public List gethBooks() {
return hBooks;
}
public void sethBooks(List hBooks) {
this.hBooks = hBooks;
}
}
2.3 CategoryMapper.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 category_id, category_name
25
26
32
33 delete from t_hibernate_category
34 where category_id = #{categoryId,jdbcType=INTEGER}
35
36
37 insert into t_hibernate_category (category_id, category_name)
38 values (#{categoryId,jdbcType=INTEGER}, #{categoryName,jdbcType=VARCHAR})
39
40
41 insert into t_hibernate_category
42
43
44 category_id,
45
46
47 category_name,
48
49
50
51
52 #{categoryId,jdbcType=INTEGER},
53
54
55 #{categoryName,jdbcType=VARCHAR},
56
57
58
59
60 update t_hibernate_category
61
62
63 category_name = #{categoryName,jdbcType=VARCHAR},
64
65
66 where category_id = #{categoryId,jdbcType=INTEGER}
67
68
69 update t_hibernate_category
70 set category_name = #{categoryName,jdbcType=VARCHAR}
71 where category_id = #{categoryId,jdbcType=INTEGER}
72
73
74
75
80
81
2.4 CategoryMapper
package com.jy.mapper;
import com.jy.model.Category;
import com.jy.model.vo.CategoryVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
@Repository
public interface CategoryMapper {
int deleteByPrimaryKey(Integer categoryId);
int insert(Category record);
int insertSelective(Category record);
Category selectByPrimaryKey(Integer categoryId);
int updateByPrimaryKeySelective(Category record);
int updateByPrimaryKey(Category record);
// 通过一个类别的id,查询出类别信息的同时,还查询出各个类别对应的书籍
CategoryVo selectByCid(@Param("cid") Integer cid);
}
2.5 HBookMapper.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 book_id, book_name, price
25
26
32
33 delete from t_hibernate_book
34 where book_id = #{bookId,jdbcType=INTEGER}
35
36
37 insert into t_hibernate_book (book_id, book_name, price
38 )
39 values (#{bookId,jdbcType=INTEGER}, #{bookName,jdbcType=VARCHAR}, #{price,jdbcType=REAL}
40 )
41
42
43 insert into t_hibernate_book
44
45
46 book_id,
47
48
49 book_name,
50
51
52 price,
53
54
55
56
57 #{bookId,jdbcType=INTEGER},
58
59
60 #{bookName,jdbcType=VARCHAR},
61
62
63 #{price,jdbcType=REAL},
64
65
66
67
68 update t_hibernate_book
69
70
71 book_name = #{bookName,jdbcType=VARCHAR},
72
73
74 price = #{price,jdbcType=REAL},
75
76
77 where book_id = #{bookId,jdbcType=INTEGER}
78
79
80 update t_hibernate_book
81 set book_name = #{bookName,jdbcType=VARCHAR},
82 price = #{price,jdbcType=REAL}
83 where book_id = #{bookId,jdbcType=INTEGER}
84
85
86
87
92
93
94
2.6 HBookMapper
1 package com.jy.mapper;
2
3 import com.jy.model.HBook;
4 import com.jy.model.vo.HbookVo;
5 import org.apache.ibatis.annotations.Param;
6 import org.springframework.stereotype.Repository;
7
8 @Repository
9 public interface HBookMapper {
10 int deleteByPrimaryKey(Integer bookId);
11
12 int insert(HBook record);
13
14 int insertSelective(HBook record);
15
16 HBook selectByPrimaryKey(Integer bookId);
17
18 int updateByPrimaryKeySelective(HBook record);
19
20 int updateByPrimaryKey(HBook record);
21
22 // 通过一个书籍id,查询出书籍的信息的同时,还查询出这本书对应的类别
23 HbookVo selectByBid(@Param("bid") Integer bid);
24
25 }
Service层相关代码
2.7 ManyToManyService
1 package com.jy.service;
2
3 import com.jy.model.vo.CategoryVo;
4 import com.jy.model.vo.HbookVo;
5 import org.apache.ibatis.annotations.Param;
6
7 public interface ManyToManyService {
8
9 // 通过一个书籍id,查询出书籍的信息的同时,还查询出这本书对应的类别
10 HbookVo selectByBid(Integer bid);
11
12 // 通过一个类别的id,查询出类别信息的同时,还查询出各个类别对应的书籍
13 CategoryVo selectByCid(Integer cid);
14 }
Service层实现类代码
2.8 ManyToManyServiceImpl
1 package com.jy.service.impl;
2
3 import com.jy.mapper.CategoryMapper;
4 import com.jy.mapper.HBookMapper;
5 import com.jy.model.vo.CategoryVo;
6 import com.jy.model.vo.HbookVo;
7 import com.jy.service.ManyToManyService;
8 import org.springframework.beans.factory.annotation.Autowired;
9 import org.springframework.stereotype.Service;
10
11 @Service
12 public class ManyToManyServiceImpl implements ManyToManyService {
13 @Autowired
14 private CategoryMapper categoryMapper;
15 @Autowired
16 private HBookMapper hBookMapper;
17
18 @Override
19 public HbookVo selectByBid(Integer bid) {
20 return hBookMapper.selectByBid(bid);
21 }
22
23 @Override
24 public CategoryVo selectByCid(Integer cid) {
25 return categoryMapper.selectByCid(cid);
26 }
27 }
Test测试类
2.9 ManyToManyServiceImplTest
1 package com.jy.service.impl;
2
3 import com.jy.SpringBaseTest;
4 import com.jy.model.Category;
5 import com.jy.model.HBook;
6 import com.jy.model.vo.CategoryVo;
7 import com.jy.model.vo.HbookVo;
8 import org.junit.Test;
9 import org.junit.runner.RunWith;
10 import org.springframework.beans.factory.annotation.Autowired;
11
12 import static org.junit.Assert.*;
13
14 public class ManyToManyServiceImplTest extends SpringBaseTest {
15
16 @Autowired
17 private ManyToManyServiceImpl manyToManyService;
18
19 // 通过一个书籍id,查询出书籍的信息的同时,还查询出这本书对应的类别
20 @Test
21 public void selectByBid() {
22 HbookVo hbookVo = manyToManyService.selectByBid(8);
23 System.out.println(hbookVo);
24 for (Category category : hbookVo.getCategories()) {
25 System.out.println(category);
26 }
27
28 }
29
30 // 通过一个类别的id,查询出类别信息的同时,还查询出各个类别对应的书籍
31 @Test
32 public void selectByCid() {
33 CategoryVo categoryVo = manyToManyService.selectByCid(8);
34 System.out.println(categoryVo);
35 for (HBook gethBook : categoryVo.gethBooks()) {
36 System.out.println(gethBook);
37 }
38
39 }
40 }
测试:
方法一:selectByBid
方法二:selectByCid