淘淘商城第二天-02

测试整合结果

需求

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

Sql语句

select * from tb_item where id=536563

Dao层

本来是写mapper接口和映射文件,但是对于单表查询,我们可以使用你想工程生成的mapper文件。
可以使用逆向工程生成的mapper文件。

Service层

接收商品id调用dao查询商品信息。返回商品pojo对象。
Dao层代码不需要写,我们写service。先新建一个service接口,就叫ItemService
在这里插入图片描述
在这里插入图片描述

Controller层

接收页面请求商品id,调用service查询商品信息。我们就不写页面了,直接返回一个json数据可以吗?可以。(返回jason需要什么?)需要使用@ResponseBody注解。
在这里插入图片描述
此时启动taotao-manager工程,在浏览器输入http://localhost:8080/
就会得到首页在这里插入图片描述
但是我们要是在浏览器输入输入http://localhost:8080/item/536563(由于在web.xml中配置了/,那么就会拦截所有请求,然后交给springmvc来处理,这里面有扫描了包com.taotao.controller,就会有这些带有service注解的方法,会执行相应的方法)
但是这里报错了。
在这里插入图片描述
这是为什么呢?
Invalid bound statement (not found): com.taotao.mapper.TbItemMapper.selectByExample
我们明明有mapper映射文件,逆向工程生成的,为什么报错。我们在E:\workspace-itcast\JavaEE16\taotao-manager\taotao-manager-mapper\target\classes\com\taotao\mapper中看到只有mapper文件,但是没有mapper的映射文件。默认是不拷过去的,我们需要拷过去。
修改taotao-manager-mapper的pom文件
在pom文件中添加如下内容:

<!-- 如果不添加此节点mybatis的mapper.xml文件都会被漏掉。 -->
<!-- 如果不添加此节点mybatis的mapper.xml文件都会被漏掉。 -->
<build>
	<resources>
           <resource>
               <directory>src/main/java</directory>
               <includes>
                   <include>**/*.properties</include>
                   <include>**/*.xml</include>
               </includes>
               <filtering>false</filtering>
           </resource>
       </resources>
</build>

这次测试:OK
在这里插入图片描述

使用maven的tomcat插件时debug

先不细讲…

现在我们工程已经搭建好了,也进行测试了。那就要实现我们的功能啦,不忘初心哦,目的是商品列表的实现。

商品列表的实现

打开后台管理工程的首页

我们这里就把上面的index.jsp删掉了,因为已经没有用了。是测试用的。我们真正访问的是jsp下面的这些,就要真正展示jsp了。这里有一个index.jsp,这是真正的首页。我们要访问这个首页,但是它是在WEB-INF下面的,我们不能直接访问。要先写一个Controller做一下跳转。

分析:先写一个controller进行页面跳转展示首页。(这个很简单,也没有什么参数,就叫pageController吧)
在这里插入图片描述
输入网址:
在这里插入图片描述
首页是使用easyUI开发。
我们点击查询商品会出现商品列表
在这里插入图片描述
首页是使用easyUI开发。
点击index.jsp中的查询商品后,被Controller拦截(先被web.xml拦截),执行该方法,从而执行item-list这个jsp(会添加上前缀和后缀,在springmvc.xml中配置了),即执行item-list.jsp。
在这里插入图片描述

商品列表查询

需求分析

1.请求的url:/item/list
在这里插入图片描述
2、请求的参数:http://localhost:8080/item/list?page=1&rows=30 分页信息。(需要看官方的手册)
3、返回值。Json数据。数据格式:
Easyui中datagrid控件要求的数据格式为:(也是通过官方文档得知,必须有个tatal和rows)
{total:”2”,rows:[{“id”:”1”,”name”,”张三”},{“id”:”2”,”name”,”李四”}]}

那么接下来就是实现dao层、service层了。

Dao层

Sql语句:SELECT * FROM tb_item LIMIT 0,30
我们这里用了分页查询,但是mybits逆向生成的mapper不能实现分页查询,那该怎么办呢?
我们可以改生成的代码,但是何必呢?麻烦的一笔。

分页插件
官方网站

https://github.com/pagehelper/Mybatis-PageHelper/tree/master/src/main/java/com/github/pagehelper

实现原理

其实就是在执行用mybatis框架执行sql语句之前,在语句上加了limit 0,10
就不具体说了

使用方法

第一步:引入pageHelper的jar包。(com.taotao.manager.mapper的pom文件中引入)
第二步:需要在SqlMapConfig.xml中配置插件。(因为这就是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>

第三步:在查询的sql语句执行之前,添加一行代码:
PageHelper.startPage(1, 10);

  • 第一个参数是page,要显示第几页。
  • 第二个参数是rows,没页显示的记录数。

第四步:取查询结果的总数量。
创建一个PageInfo类的对象,从对象中取分页信息。

分页测试

我们写一个测试方法吧,TestPageHelper
在这里插入图片描述
注意:分页插件对逆向工程生成的代码支持不好,不能对有查询条件的查询分页。会抛异常。
使用我修改过的版本就可以了。
我们这个项目里面使用的分页插件时老师修改过的插件。

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

Service层

接收分页参数,一个是page一个是rows。调用dao查询商品列表。并分页。返回商品列表。
返回一个EasyUIDateGrid支持的数据格式。需要创建一个Pojo。此pojo应该放到taotao-common工程中。(为什么要放到common里面,因为其他工程也可能要使用到这个)
在这里插入图片描述
这是pojo,EasyUIDateGrid支持的数据格式的封装类。
代码实现:
在这里插入图片描述
下面就是截图留念啦:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值