• 淘淘商城2


    昨天讲了电商背景、淘淘商城要干什么、分布式架构思想、项目后台工程搭建7个项目、工程传至svn,项目搭好了今天要实现工程了,实现一个简单的商品列表查询功能。

    今天:框架整合springMVC+spring+mybatis。创建数据库。mybatis逆向工程生成代码。商品列表功能实现

    创建数据库

      虽然表少,是小项目?这个项目是经过裁剪过的,一些多于的功能去掉了。实际开发中一打开上百个表,实际关于你这块业务用的多说不过十张,所以不要以为表少项目就少。

      在电商里面一般是不进行关联查询的,电商里面要处理非常大的并发,非常多的查询,非常多的查询这个时候如果你再进行数据表之间的关联就会影响性能,对数据库造成压力。所以互联网电商里面尽可能进行单表查询。使用冗余问题解决表的关联问题(尽管这样不遵守数据库设计范式(范式:以前硬盘存储比较贵,存储空间比较小,尽可能减少冗余,为了存储牺牲了性能,但是现在完全可以为了性能牺牲存储))。在这个项目里面几乎所有的查询都是单表查询,但表查询还有利于分库分表。

    要实现商品的列表查询item表与我们有关,打开一看

    再提一个概念:Sku:最小库存量单位,一般都问sku,就是商品id。比喻买衣服,衣服有尺码,颜色的不同,这个sku就是代表其中的一款;比喻苹果手机有32G、64G不同款,每一款都是一个sku,sku就是在同一款商品下面划分出的不同配置,一个sku唯一确定一款商品。123sku就代表苹果32G、124sku就代表苹果64G。

    其实sku就是商品id,是商品最细力度的划分。每个sku都唯一对应一款商品,商品的颜色、配置都已经唯一确定。

    mybatis逆向工程生成代码

    mybatis的逆向工程就是根据数据库表生成java代码

    导入逆向工程生成代码(来自官方的一套代码),

    这个文件中指定了数据库4大参数。生成po类的位置(com.taotao.pojo),其中targetPackage属性表示生成的代码要放在哪个包下。生成映射文件的位置和生成mapper接口的位置(同一个包下:com.taotao.mapper)。以及那些表参与生成。

    找到main方法,右键运行,完了之后到项目刷新发现生成了

    SSM框架整合(重点)

    taotao-manager聚合4个模块,我们现在要把配置文件写在哪个模块里面呢?manager是一个聚合工程,里面没有代码,所以不能往里面放。pojo、mapper、service都是一个jar包,打完后就放在了WEB-INF目录下面了,加入这些工程里面有配置文件的话最终是识别不出来的,而taotao-manager-web是一个war包,所以这些配置文件只能放在这个工程src/main/resources下面才能读到

     4.2框架整合(重点)

    需要将配置文件放在taotao-manager-web工程下,因为此工程为war工程,其它工程只是一个jar包。配置文件是由tomcat读取的,tomcat不支持从jar包里面读取。本身框架的配置是由框架读取的,所以可以把配置文件放在某一个jar包里面读取

    4.2.1Mybatis整合

    一、需要一个mybatis本身的配置SqlMapConfig.xml文件

    二、然后Spring的dao层配置application-dao.xml文件

    4.2.2Service层

    一、加载service层实现类

    从上面applicationcontext-dao.xml同样位置拷贝一份改名为applicationcontext-service.xml粘贴到同样位置

    二、配置事务

    4.2.3表现层(很简单)

     web.xml

    补充:springmvc.xml文件中添加资源映射

    概念:Spring和springmvc的父子容器关系

    问题:为什么不能配置一个全局扫描?  场景:上面配置文件中springmvc.xml里面配置了扫描@controller,在applicationContext-service.xml文件中配置扫描@service,在applicationContext-dao.xml里面扫描@mapper

    答案:不好使,这样配置会找不到页面404。如果配全局扫描,它会把所有对象扫描到spring中,springmvc中根本没有对象,没有对象就没有controller,加载处理器映射器的时候就找不到对象,找不到对象就404了

    测试整合结果(下面是分析及代码实现)

    需求:根据商品id查询商品信息(测试框架整合的通不通)

    Sql:select * from tb_item where id = 536563

    Dao层:直接使用逆向工程生成的mapper文件(里面写sql)

    Service层:接收商品id调用dao查询商品信息,返回pojo对象(pojo逆向工程生成了)

    Controller层:接收页面请求的商品id,调用service查询商品信息,我们就不写页面了,直接返回json数据,返回json需要使用@ResponseBody注解

     访问

     解决方法

     使用Maven的Tomcat插件时debug

     debug启动项目,然后访问http://localhost:8080/item/23424回到eclipse同意切换到debug透视图发现debug的位置居然没有代码

    点击Edit Source Lookup Path...------>弹出来一个框Default,里面没有源码,所以remove------>然后add又谈出来一个框------>

    选Java Project,不要选Project,它会把taotao-manager工程列出来,它是聚合工程,里面代码不被eclipse管理的,然后勾选四个

     点OK,它会闪一下,下次启动时生效(这个版本只能下次启动时生效)

     这是一种比较方便的配置方法,是出错了之后发现没有代码可以关联一下。当然你可以未雨绸缪,在启动之前配置一下

    配置第二种方法:

    在run或debug项目前,选择下面的debug configuration(选)或run configuration,然后

     现在框架整合完了,要实现最初的需求了

    商品列表功能实现

  • 相关阅读:
    MutationObserver DOM变化的观察
    lspci详解分析
    dpdk快速编译使用
    bonding的系统初始化介绍
    fio测试nvme性能
    [驱动] 一个简单内核驱动,通过qemu调试(1)
    qemu启动vm后,如何host上使用ssh连接?
    Linux C下变量和常量的存储的本质
    从计算机中数据类型的存储方式,思考理解原码,反码,补码
    Linux C动态链接库实现一个插件例子
  • 原文地址:https://www.cnblogs.com/djlindex/p/11625759.html
Copyright © 2020-2023  润新知