博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
淘淘商城第二天
阅读量:6136 次
发布时间:2019-06-21

本文共 11467 字,大约阅读时间需要 38 分钟。

淘淘商城第二天

1   课程计划

商品列表的查询

1、框架整合springmvc+spring+mybatis

2、创建数据库

3、使用mybatis的逆向工程生成代码

4、商品列表功能实现

 

 

2   创建数据库

使用mysql数据库。

 

在互联网行业的项目中尽可能的减少表的管理查询。使用冗余解决表的关联问题。有利于分库分表。

 

商品表:

Sku:最小库存量单位。就是商品id。就是商品最细力度的划分。每个sku都唯一对应一款商品,商品的颜色、配置都已经唯一确定。

 

3   逆向工程

Mybatis的逆向工程。根据数据库表生成java代码。

注意:如果想再次生成代码,必须先将已经生成的代码删除,否则会在原文件中追加。

 

4   Ssm框架整合

4.1  整合的思路

4.1.1   Dao

使用mybatis框架。创建SqlMapConfig.xml

创建一个applicationContext-dao.xml

1、配置数据源

2、需要让spring容器管理SqlsessionFactory,单例存在。

3、mapper的代理对象放到spring容器中。使用扫描包的方式加载mapper的代理对象。

 

4.1.2   Service

1、事务管理

2、需要把service实现类对象放到spring容器中管理。

 

4.1.3   表现层

1、配置注解驱动

2、配置视图解析器

3、需要扫描controller

 

4.1.4   Web.xml

1、spring容器的配置

2、Springmvc前端控制器的配置

3、Post乱码过滤器

 

4.2  框架整合

需要把配置文件放到taotao-manager-web工程下。因为此工程为war工程,其他的工程只是一个jar包。

4.2.1   Mybatis整合

1 
2 3 8 9
10 11 12 13
14

 

applicationContext-dao.xml

1 
2 3
18 19 20 21
22 23
24 25
26 27
28 29
32 33
34 35
36 37
38 39
40 41
42 43
44 45
46 47
48 49
50 51
52 53
54 55
56 57
58 59
60 61
62 63
64 65
66

 

4.2.2   Service

applicationContext-service.xml

1 
2 3
18 19 20 21
22 23
24 25
26

 

applicationContext-trans.xml

1 
2 3
18 19 20 21
22 23
26 27
28 29
30 31
32 33
34 35
36 37
38 39
40 41
42 43
44 45
46 47
48 49
50 51
52 53
54 55
56 57
58 59
60 61
62 63
64 65
66 67
70 71
72 73
74

 

4.2.3   表现层

1 
2 3
16 17 18 19
20 21
22 23
26 27
28 29
30 31
32 33
34

 

Web.xml

 

1 
2 3
10 11
taotao-manager
12 13
14 15
index.html
16 17
index.htm
18 19
index.jsp
20 21
default.html
22 23
default.htm
24 25
default.jsp
26 27
28 29
30 31
32 33
contextConfigLocation
34 35
classpath:spring/applicationContext-*.xml
36 37
38 39
40 41
org.springframework.web.context.ContextLoaderListener
42 43
44 45
46 47
48 49
CharacterEncodingFilter
50 51
org.springframework.web.filter.CharacterEncodingFilter
52 53
54 55
encoding
56 57
utf-8
58 59
60 61
62 63
64 65
CharacterEncodingFilter
66 67
/*
68 69
70 71
72 73
74 75
taotao-manager
76 77
org.springframework.web.servlet.DispatcherServlet
78 79
80 81
82 83
contextConfigLocation
84 85
classpath:spring/springmvc.xml
86 87
88 89
1
90 91
92 93
94 95
taotao-manager
96 97
/
98 99
100 101
102

 

/:会拦截所有请求包括静态资源。需要在springmvc.xml中添加静态资源的映射。

1 
2 3
4 5
6

 

4.2.4   添加静态资源

5   Springmvcspring的父子容器关系

applicationContext-service中配置:

1 
2 3
4 5 会扫描@Controller、@Service、@Repository、@Compnent 6 7 8

SpringmvcXml中不扫描。

结论:springmvc。不能提供服务,因为springmvc子容器中没有controller对象。

 

6   测试整合结果

6.1  需求

跟据商品id查询商品信息。

6.2  Sql语句

SELECT * from tb_item WHERE id=536563

 

6.3  Dao

可以使用逆向工程生成的mapper文件。

 

6.4  Service

接收商品id调用dao查询商品信息。返回商品pojo对象。

1 /**  2   3  * 商品管理Service  4   5  * 

Title: ItemServiceImpl

6 7 *

Description:

8 9 *

Company: www.itcast.com

10 11 * @author 入云龙 12 13 * @date 2015年9月2日上午10:47:14 14 15 * @version 1.0 16 17 */ 18 19 @Service 20 21 public class ItemServiceImpl implements ItemService { 22 23 24 25 @Autowired 26 27 private TbItemMapper itemMapper; 28 29 30 31 @Override 32 33 public TbItem getItemById(long itemId) { 34 35 36 37 //TbItem item = itemMapper.selectByPrimaryKey(itemId); 38 39 //添加查询条件 40 41 TbItemExample example = new TbItemExample(); 42 43 Criteria criteria = example.createCriteria(); 44 45 criteria.andIdEqualTo(itemId); 46 47 List
list = itemMapper.selectByExample(example); 48 49 if (list != null && list.size() > 0) { 50 51 TbItem item = list.get(0); 52 53 return item; 54 55 } 56 57 return null; 58 59 } 60 61 62 63 } 64

 

6.5  Controller

接收页面请求商品id,调用service查询商品信息。直接返回一个json数据。需要使用@ResponseBody注解。

1 @Controller  2   3 public class ItemController {  4   5   6   7      @Autowired  8   9      private ItemService itemService; 10  11  12  13      @RequestMapping("/item/{itemId}") 14  15      @ResponseBody 16  17      public TbItem getItemById(@PathVariable Long itemId) { 18  19          TbItem tbItem = itemService.getItemById(itemId); 20  21          return tbItem; 22  23      } 24  25 } 26

 

 

解决方法:

修改taotao-manager-mapperpom文件

pom文件中添加如下内容:

1 
2 3
4 5
6 7
8 9
src/main/java
10 11
12 13
**/*.properties
14 15
**/*.xml
16 17
18 19
false
20 21
22 23
24 25
26

测试OK

7   使用maventomcat插件时debug

下次启动生效。

 

第二种方法:

 

8   商品列表的实现

8.1  打开后台管理工程的首页

分析:先写一个controller进行页面跳转展示首页。

首页是使用easyUI开发。

 

1 /**  2   3  * 页面跳转controller  4   5  * 

Title: PageController

6 7 *

Description:

8 9 *

Company: www.itcast.com

10 11 * @author 入云龙 12 13 * @date 2015年9月2日上午11:11:41 14 15 * @version 1.0 16 17 */ 18 19 @Controller 20 21 public class PageController { 22 23 24 25 /** 26 27 * 打开首页 28 29 */ 30 31 @RequestMapping("/") 32 33 public String showIndex() { 34 35 return "index"; 36 37 } 38 39 /** 40 41 * 展示其他页面 42 43 *

Title: showpage

44 45 *

Description:

46 47 * @param page 48 49 * @return 50 51 */ 52 53 @RequestMapping("/{page}") 54 55 public String showpage(@PathVariable String page) { 56 57 return page; 58 59 } 60 61 } 62 63 64

 

8.2  商品列表查询

8.2.1   需求分析

1、请求的url/item/list

2、请求的参数:    分页信息。(需要看官方的手册)

3、返回值。Json数据。数据格式:

Easyuidatagrid控件要求的数据格式为:

1 {total:”2”,rows:[{“id”:”1”,”name”,”张三”},{“id”:”2”,”name”,”李四”}]}

 

8.2.2   Dao

Sql语句:SELECT * from tb_item LIMIT 0,30

 

8.2.2.1         分页插件PageHelper

8.2.2.1.1       官方网站:

8.2.2.1.2       实现原理

 

8.2.2.1.3       使用方法

第一步:引入pageHelperjar包。

第二步:需要在SqlMapConfig.xml中配置插件。

1 
2 3 8 9
10 11
12 13
14 15
16 17
18 19
20 21
22 23
24 25
26

 

第三步:在查询的sql语句执行之前,添加一行代码:

PageHelper.startPage(1, 10);

第一个参数是page,要显示第几页。

第二个参数是rows,没页显示的记录数。

第四步:取查询结果的总数量。

创建一个PageInfo类的对象,从对象中取分页信息。

 

8.2.2.1.4       分页测试
1 public class TestPageHelper {  2   3   4   5      @Test  6   7      public void testPageHelper() {  8   9          //创建一个spring容器 10  11          ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:spring/applicationContext-*.xml"); 12  13          //从spring容器中获得Mapper的代理对象 14  15          TbItemMapper mapper = applicationContext.getBean(TbItemMapper.class); 16  17          //执行查询,并分页 18  19          TbItemExample example = new TbItemExample(); 20  21          //分页处理 22  23          PageHelper.startPage(2, 10); 24  25          List
list = mapper.selectByExample(example); 26 27 //取商品列表 28 29 for (TbItem tbItem : list) { 30 31 System.out.println(tbItem.getTitle()); 32 33 } 34 35 //取分页信息 36 37 PageInfo
pageInfo = new PageInfo<>(list); 38 39 long total = pageInfo.getTotal(); 40 41 System.out.println("共有商品:"+ total); 42 43 44 45 } 46 47 } 48

 

注意:分页插件对逆向工程生成的代码支持不好,不能对有查询条件的查询分页。会抛异常。

使用我修改过的版本就可以了。

 

Dao可以实现逆向工程生成的mapper文件+PageHelper实现。

 

8.2.3   Service

一个是rows。调用dao查询商品列表。并分页。返回商品列表。

返回一个EasyUIDateGrid支持的数据格式。需要创建一个Pojo。此pojo应该放到taotao-common工程中。

1 public class EUDataGridResult {  2   3   4   5      private long total;  6   7      private List
rows; 8 9 public long getTotal() { 10 11 return total; 12 13 } 14 15 public void setTotal(long total) { 16 17 this.total = total; 18 19 } 20 21 public List
getRows() { 22 23 return rows; 24 25 } 26 27 public void setRows(List
rows) { 28 29 this.rows = rows; 30 31 } 32 33 34 35 36 37 } 38

 

代码实现

1 /**  2   3       * 商品列表查询  4   5       * 

Title: getItemList

6 7 *

Description:

8 9 * @param page 10 11 * @param rows 12 13 * @return 14 15 * @see com.taotao.service.ItemService#getItemList(long, long) 16 17 */ 18 19 @Override 20 21 public EUDataGridResult getItemList(int page, int rows) { 22 23 //查询商品列表 24 25 TbItemExample example = new TbItemExample(); 26 27 //分页处理 28 29 PageHelper.startPage(page, rows); 30 31 List
list = itemMapper.selectByExample(example); 32 33 //创建一个返回值对象 34 35 EUDataGridResult result = new EUDataGridResult(); 36 37 result.setRows(list); 38 39 //取记录总条数 40 41 PageInfo
pageInfo = new PageInfo<>(list); 42 43 result.setTotal(pageInfo.getTotal()); 44 45 return result; 46 47 } 48

 

8.2.4   Controller

接收页面传递过来的参数pagerows。返回json格式的数据。EUDataGridResult

需要使用到@ResponseBody注解。

1 @RequestMapping("/item/list")  2   3      @ResponseBody  4   5      public EUDataGridResult getItemList(Integer page, Integer rows) {  6   7          EUDataGridResult result = itemService.getItemList(page, rows);  8   9          return result; 10  11      } 12

 

截图留念:

转载地址:http://fveua.baihongyu.com/

你可能感兴趣的文章
面试总结
查看>>
Chrome浏览器播放HTML5音频没声音的解决方案
查看>>
easyui datagrid 行编辑功能
查看>>
HDU 2818 (矢量并查集)
查看>>
实验二 Java面向对象程序设计
查看>>
------__________________________9余数定理-__________ 1163______________
查看>>
webapp返回上一页 处理
查看>>
新安装的WAMP中phpmyadmin的密码问题
查看>>
20172303 2017-2018-2 《程序设计与数据结构》第5周学习总结
查看>>
eclipse中将一个项目作为library导入另一个项目中
查看>>
Go语言学习(五)----- 数组
查看>>
Android源码学习之观察者模式应用
查看>>
416. Partition Equal Subset Sum
查看>>
Django之FBV与CBV
查看>>
Vue之项目搭建
查看>>
app内部H5测试点总结
查看>>
[TC13761]Mutalisk
查看>>
Data Wrangling文摘:Non-tidy-data
查看>>
while()
查看>>
常用限制input的方法
查看>>