SSM项目之---淘淘商城(第二天)

淘淘商城第二天

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整合

<?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>

</configuration>

applicationContext-dao.xml

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"

xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd

http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd

http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">

 

<!-- 数据库连接池 -->

<!-- 加载配置文件 -->

<context:property-placeholder location="classpath:resource/db.properties" />

<!-- 数据库连接池 -->

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"

destroy-method="close">

<property name="url" value="${jdbc.url}" />

<property name="username" value="${jdbc.username}" />

<property name="password" value="${jdbc.password}" />

<property name="driverClassName" value="${jdbc.driver}" />

<property name="maxActive" value="10" />

<property name="minIdle" value="5" />

</bean>

<!-- 配置sqlsessionFactory -->

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">

<property name="configLocation" value="classpath:mybatis/SqlMapConfig.xml"></property>

<property name="dataSource" ref="dataSource"></property>

</bean>

<!-- 配置扫描包,加载mapper代理对象 -->

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">

<property name="basePackage" value="com.taotao.mapper"></property>

</bean>

</beans>

4.2.1 Service

applicationContext-service.xml

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:context="http://www.springframework.org/schema/context"xmlns:p="http://www.springframework.org/schema/p"

xmlns:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd

http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd

http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">

 

<!-- 扫描包加载Service实现类 -->

<context:component-scan base-package="com.taotao.service"></context:component-scan>

</beans>

 

applicationContext-trans.xml

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"

xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd

http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd

http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">

 

<!-- 事务管理器 -->

<bean id="transactionManager"

class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

<!-- 数据源 -->

<property name="dataSource" ref="dataSource" />

</bean>

<!-- 通知 -->

<tx:advice id="txAdvice" transaction-manager="transactionManager">

<tx:attributes>

<!-- 传播行为 -->

<tx:method name="save*" propagation="REQUIRED" />

<tx:method name="insert*" propagation="REQUIRED" />

<tx:method name="add*" propagation="REQUIRED" />

<tx:method name="create*" propagation="REQUIRED" />

<tx:method name="delete*" propagation="REQUIRED" />

<tx:method name="update*" propagation="REQUIRED" />

<tx:method name="find*" propagation="SUPPORTS" read-only="true" />

<tx:method name="select*" propagation="SUPPORTS" read-only="true" />

<tx:method name="get*" propagation="SUPPORTS" read-only="true" />

</tx:attributes>

</tx:advice>

<!-- 切面 -->

<aop:config>

<aop:advisor advice-ref="txAdvice"

pointcut="execution(* com.taotao.service.*.*(..))" />

</aop:config>

</beans>

 

4.2.2 表现层

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"

xmlns:context="http://www.springframework.org/schema/context"

xmlns:mvc="http://www.springframework.org/schema/mvc"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd

        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd

        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

 

<context:component-scan base-package="com.taotao.controller" />

<mvc:annotation-driven />

<bean

class="org.springframework.web.servlet.view.InternalResourceViewResolver">

<property name="prefix" value="/WEB-INF/jsp/" />

<property name="suffix" value=".jsp" />

</bean>

</beans>

 

Web.xml

 

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

id="taotao" version="2.5">

<display-name>taotao-manager</display-name>

<welcome-file-list>

<welcome-file>index.html</welcome-file>

<welcome-file>index.htm</welcome-file>

<welcome-file>index.jsp</welcome-file>

<welcome-file>default.html</welcome-file>

<welcome-file>default.htm</welcome-file>

<welcome-file>default.jsp</welcome-file>

</welcome-file-list>

<!-- 加载spring容器 -->

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>classpath:spring/applicationContext-*.xml</param-value>

</context-param>

<listener>

<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

</listener>

<!-- 解决post乱码 -->

<filter>

<filter-name>CharacterEncodingFilter</filter-name>

<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

<init-param>

<param-name>encoding</param-name>

<param-value>utf-8</param-value>

</init-param>

</filter>

<filter-mapping>

<filter-name>CharacterEncodingFilter</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

<!-- springmvc的前端控制器 -->

<servlet>

<servlet-name>taotao-manager</servlet-name>

<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

<!-- contextConfigLocation不是必须的, 如果不配置contextConfigLocation,springmvc的配置文件默认在:WEB-INF/servlet的name+"-servlet.xml" -->

<init-param>

<param-name>contextConfigLocation</param-name>

<param-value>classpath:spring/springmvc.xml</param-value>

</init-param>

<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>taotao-manager</servlet-name>

<url-pattern>/</url-pattern>

</servlet-mapping>

</web-app>

 

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

<!-- 资源映射 -->

<mvc:resources location="/WEB-INF/css/" mapping="/css/**"/>

<mvc:resources location="/WEB-INF/js/" mapping="/js/**"/>

 

4.2.4 添加静态资源

5、 Springmvcspring的父子容器关系

例如:

applicationContext-service中配置:

<!-- 扫描包加载Service实现类 -->

<context:component-scan base-package="com.taotao"></context:component-scan>

会扫描@Controller@Service@Repository@Compnent

 

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对象。

@Service

public class ItemServiceImplimplements ItemService {

 

@Autowired

private TbItemMapperitemMapper;

@Override

public TbItem getItemById(long itemId) {

//TbItem item = itemMapper.selectByPrimaryKey(itemId);

//添加查询条件

TbItemExample example =new TbItemExample();

Criteria criteria = example.createCriteria();

criteria.andIdEqualTo(itemId);

List<TbItem> list = itemMapper.selectByExample(example);

if (list !=null &&list.size() > 0) {

TbItem item = list.get(0);

return item;

}

return null;

}

 

}

 

6.5 Controller

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

@Controller

public class ItemController {

 

@Autowired

private ItemService itemService;

@RequestMapping("/item/{itemId}")

@ResponseBody

public TbItem getItemById(@PathVariable LongitemId) {

TbItem tbItem = itemService.getItemById(itemId);

return tbItem;

}

}

8、商品列表的实现

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

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

首页是使用easyUI开发。

 

@Controller

public class PageController {

 

/**

 * 打开首页

 */

@RequestMapping("/")

public String showIndex() {

return "index";

}

/**

 * 展示其他页面

 * <p>Title:showpage</p>

 * <p>Description:</p>

 * @param page

 * @return

 */

@RequestMapping("/{page}")

public String showpage(@PathVariable Stringpage) {

return page;

}

}

 

 

8.2 商品列表查询

8.2.1 Dao

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


  分页插件PageHelper

 分页测试

public class TestPageHelper {

 

@Test

public void testPageHelper() {

//创建一个spring容器

ApplicationContext applicationContext =new ClassPathXmlApplicationContext("classpath:spring/applicationContext-*.xml");

//从spring容器中获得Mapper的代理对象

TbItemMapper mapper = applicationContext.getBean(TbItemMapper.class);

//执行查询,并分页

TbItemExample example = new TbItemExample();

//分页处理

PageHelper.startPage(2, 10);

List<TbItem> list = mapper.selectByExample(example);

//取商品列表

for (TbItem tbItem : list) {

System.out.println(tbItem.getTitle());

}

//取分页信息

PageInfo<TbItem> pageInfo = new PageInfo<>(list);

long total =pageInfo.getTotal();

System.out.println("共有商品:"+total);

}

}


1.1.1 Service

接收分页参数,一个是page一个是rows。调用dao查询商品列表。并分页。返回商品列表。

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

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;

}

}


</pre><span style="font-size:18px;"></span><p><span style="font-size:18px;">代码实现</span></p><pre name="code" class="java">

@Override

public EUDataGridResult getItemList(int page,int rows) {

//查询商品列表

TbItemExample example = new TbItemExample();

//分页处理

PageHelper.startPage(page, rows);

List<TbItem> list = itemMapper.selectByExample(example);

//创建一个返回值对象

EUDataGridResult result = new EUDataGridResult();

result.setRows(list);

//取记录总条数

PageInfo<TbItem> pageInfo = new PageInfo<>(list);

result.setTotal(pageInfo.getTotal());

return result;


 

1.1.2 Controller

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

需要使用到@ResponseBody注解。

@RequestMapping("/item/list")

@ResponseBody

public EUDataGridResult getItemList(Integerpage, Integer rows) {

EUDataGridResult result = itemService.getItemList(page,rows);

return result;

}

 

截图留念:



评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值