淘淘商城——day2(全部商品的展现:查询全部商品)

一 上节回顾

  1. 项目介绍
  2. 项目搭建
  3. 前端页面显示

二  今日计划

2.一、完成商品的展现前端

2.二、类目查询java

2.三、搭建图片服务器mysql

2.四、添加商品git

3、商品展现

3.0、访问路径

      咱们发现访问路径是带项目名,而easyui访问后台controller的时候是不带项目名的,咱们能够从新设置项目的访问路径github

在taotao-manager项目pom文件添加如下配置web

<build>
		<!-- 配置插件 -->
		<plugins>
			<plugin>
				<groupId>org.apache.tomcat.maven</groupId>
				<artifactId>tomcat7-maven-plugin</artifactId>
				<configuration>
				<!-- 设置tomcat的映射路径 -->
					<path>/</path>
					<!-- 端口号 -->
					<port>8080</port>
				</configuration>
			</plugin>
		</plugins>
	</build>

    而后报错,从新安装一下taotao-manager便可spring

3.一、分析

    咱们须要查询商品表tb_item,而且须要使用分页。因此须要配置mybatis的分页插件sql

3.二、JSP分析

       咱们点击查询商品,会将itm-list.jsp页面  加载到首页中数据库

2.请求的参数:http://localhost:8080/item/list?page=1&rows=30 分页信息。(须要看官方的手册)apache

       Page:当前第几页

       Rows:每页的数据量

3.返回值:  Json数据,数据格式:

           Easyui中datagrid控件要求的数据格式为:

                                                 total:总数据量,rows:对象数据

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

           咱们查询出来的结果都要按照easyui的规范来传递数据,因此咱们须要将查询出来的数据封装到EasyUI要求的格式中,咱们这能够建立一个工具类来封装数据。     该实体类中包含total,rows

3.三、建立实体类

        该实体类须要建立到taotao-common工程下。(由于是做为工具类)

package com.taotao.pojo;

import java.util.List;

public class EUDataGridResult {

     private Long total;//存储当前查询,出来的总数据量
     private List<?> rows; //存储查询出来的全部对象
	public Long getTotal() {
		return total;
	}
	public void setTotal(Long total) {
		this.total = total;
	}
	public List<?> getRows() {
		return rows;
	}
	public void setRows(List<?> rows) {
		this.rows = rows;
	}    

}

3.四、配置mybatis的分页插件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
	PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
	"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
	<!-- 配置分页插件 -->
	<plugins>
		<plugin interceptor="com.github.pagehelper.PageHelper">
			<!-- 设置数据库类型 Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL六种数据库 -->
			<property name="dialect" value="mysql"/>
		</plugin>
	</plugins>
</configuration>

3.五、错误

        找不到dao层

解决方法:

修改taotao-mapper的pom文件

    在pom文件中添加以下内容:

<build>
  	<!-- 不拦截properties和xml文件 -->
		<resources>
            <resource>
            <!-- 文件路径 -->
                <directory>src/main/java</directory>
                <!-- 文件类型 -->
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <!-- 改成false -->
                <filtering>false</filtering>
            </resource>
        </resources>	
	</build>

3.六、Dao层

     单表操做,直接用逆向工程便可

3.七、Service层

            接收controller传过来的page和rows,调用mapper查询数据并进行分页,返回EUDataGirdResult对象

取查询结果的总数量:

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

package com.taotao.service.impl;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.taotao.mapper.TbItemMapper;
import com.taotao.pojo.EUDataGridResult;
import com.taotao.pojo.TbItem;
import com.taotao.pojo.TbItemExample;
import com.taotao.pojo.TbItemExample.Criteria;
import com.taotao.service.ItemService;
@Service
public class ItemServiceImpl implements ItemService {
	
	//注入TbItemMapper
	@Resource
	private TbItemMapper TbItemMapper;
		
	@Override
	public EUDataGridResult selectItem(Integer page, Integer rows) {
		//先设置分页策略
		PageHelper.startPage(page, rows);
		//查询,注意不能传null值
		TbItemExample tbItemExample = new TbItemExample();
		//Criteria criteria = tbItemExample.createCriteria();
		List<TbItem> list = TbItemMapper.selectByExample(tbItemExample);
		//设置分页
		//存储数据
		PageInfo<TbItem> pageInfo = new PageInfo<TbItem>(list);
		EUDataGridResult result = new EUDataGridResult();
		//list:全部的数据
		//pageInfo:装的本页的数据
		result.setRows(pageInfo.getList());
		result.setTotal(pageInfo.getTotal());
		return result;
	}

}

3.八、Controller

           接收前端传过来的page和rows,访问Service层,接收EUDataGirdResult,并以Json格式返回给前端页面

package com.taotao.controller;

import javax.annotation.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.taotao.pojo.EUDataGridResult;
import com.taotao.service.ItemService;

@Controller
@RequestMapping("/item")
public class ItemContoller {
	
	@Resource
	private ItemService itemService;
	
	/**
	 * 返回值:EUDataGridResult,封装数据
	 *调用Service查询
	 */
	@RequestMapping("/list")
	@ResponseBody
	public EUDataGridResult selectItem(Integer page,Integer rows){
		return itemService.selectItem(page,rows);	
	}

}

3.九、展现结果

  要想访问到页面,首先须要去controller写个接口去访问

 

package com.taotao.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class PageController {
	//展现首页
	@RequestMapping("/")
	public String topage(){
		return "index";
	}
	
	//展现其余页面
	@RequestMapping("/{page}")
	public String showpage(@PathVariable String page){
		return page;
	}
	
}

4、项目开发小技巧

4.一、前端页面

    URL:

    参数:

    返回值:该建立pojo就建立pojo

4.二、Controller

     接收参数:根据前端页面肯定

     返回值:根据前端页面肯定

      咱们可能写接口提供出去给别的程序调用(如:上边那个controller写的就是展现页面),这个时候返回值和requestmapping就是本身决定了。你爱调不调

4.三、Service

      调用Mapper,接收controller传递的参数,返回数据便可,这要写一些业务。

4.四、Mapper

     单表操做,不用写,直接用逆向工程生成的代码。若是是多表操做,建立视图便可

4.五、关于报错

     1)看报错信息,分析是前端报错仍是后端报错

     2)尝试本身思考报错缘由,分析可能出现错误的地方,多是代码,多是配置

     3)上网搜索