电商秒杀笔记总结【1】

一  创建工程

报rom.junit错可以先把test文件删除

二 集成springboot的项目

打开springboot官方文档 ,粘贴parent父包到pom.XML ;粘贴spring-boot-starter-web依赖

导入依赖 可以看到external-libraries 外部库对了很多库

三 使用springboot搭建一个·web项目

1)在App类上加@EnableAutoConfiguration

目的:1 ,将app启动类变成springboot的bean  2,启动自动化配置

2) 在main中加SpringApplication.run(App.class,args);

目的:启动springboot项目

四 使用springboot内嵌springMVC

1.在App类上加@RestController注解

2  创建一个函数,使用@RequestMapping("/")注解

五 更改服务器端口

1 在resources目录下新建application.properties配置文件

2 设置端口server.port=8090

springboot通过固定在classpath的resources目录下寻找一个叫application.properties的配置文件,根据配置文件的key-value对,加载内部的配置,就可以实现通过配置文件更改端口

六 集成mybatis

1)在pom.xml文件中新增

1  mysql数据库依赖  mysql-connector-java

2 连接池druid依赖  druid

3  springboot对mybatis支持的依赖mybatis-spring-boot-starter

2)在application.properties配置文件中导入mybatis需要的配置,用来启动带mybatis数据库访问的springboot工程

(1)

  • 配置mybatis.mapperLocations指定在classpath下面的mapping目录下,访问所有xml文件
      • mybatis.mapperLocations=classpath:mapping/*.xml
  • 在resources目录下创建mapping文件夹

(2)使用mybatis的自动生成工具,用来生成对应的数据库文件映射

  • 在pom文件中引入mybatis自动生成文件的插件plugin
    • mybatis-generator-maven-plugin
  • 加入生成plugin对应的依赖
    • mybatis-generator-core
    • mysql-connector-java
  • 加入execution
    • <executions>
    •   <execution>
    •     <id>mybatis generator</id>
    •     <phase>package</phase>
    •     <goals>
    •       <goal>generate</goal>
    •     </goals>
    •   </execution>
    • </executions>
  • 加入配置configuration,避免反复生成文件
    • verbose:允许移动生成的文件
    • overwrite:允许文件自动覆盖
    • configurationFile:位置选在src/main/resources/mybatis-generator.xml下

  • 编写src/main/resources/mybatis-generator.xml文件
    • 新建mybatis-generator.xml文件
    • 编写mybatis-generator.xml文件(可在mybatis官网下载)
    • 新建mysql数据库miaoshop
        • 创建用户表
        • 创建用户密码表

    • 修改mybatis-generator.xml文件
        • <!--数据库链接地址,账号,密码-->jdbcConnection
        • <!--生成Model(指数据库对应到java的Dto的类 DataObject)类存放位置--> javaModelGenerator
          • 新建com\miaosha\dataobject包
          • 修改javaModelGenerator中  :   targetPackage="com.miaosha.dataobject"
          •     目的:把数据库中用户表和密码表会分别建立一个dataobject类到com.miaosha.dataobject路径下
        • <!--生成映射文件存放位置-->sqlMapGenerator
          • 设置映射文件路径在之前创建的mapping目录下:targetPackage="mapping"
        • <!--生成Dao类存放位置-->javaClientGenerator
          • 新建dao目录
          • 指定targetPackage="com.miaosha.dao"
        • <!--生成对应表及类名-->table
    • 点击Run-Edit Configurations
    • 新增Maven ,使用命令command lines:mybatis-generator:generate  解析到pom文件指定的mybatis的generator插件,并且执行它

自动生成完成后新增了6个文件

[INFO] Saving file UserDOMapper.xml

[INFO] Saving file UserPasswordDOMapper.xml

[INFO] Saving file UserDO.java

[INFO] Saving file UserDOMapper.java

[INFO] Saving file UserPasswordDO.java

[INFO] Saving file UserPasswordDOMapper.java

  • (3)
  •     1)在application.properties配置文件中使用springboot中自带的datasource方式
      • 设置数据库地址,账号,密码
      • 设置数据库实现类

到此就可以使用使用mybatis了

  • 2)使用pringboot扫描mybatis的配置文件,即DOMapper和后面的Services封装
      • (1) 改动App类中@EnableAutoConfiguration注解为:@SpringBootApplication(scanBasePackages = {"com.miaosha"})
            • 目的:两个注解都是将APP类交给spring托管,并且制定App是一个主启动类,其中scanBasePackages 为根目录包,能够扫描该包,通过注解的方式,自动发现@Service   @Component@Repository等
      • (2) 加注解@MapperScan("com.miaosha.dao"),将dao存放的地方设置在这个注解下
      • (3)新建UserDOMapper对象,使用@Autowired自动注入
      • (4)使用userDOMapper.selectByPrimaryKey(1)方法,返回UserDO对象
      • (5)打印UserDO对象的getName()即用户名字

MVC代码完善功能:通过页面传回的ID获取用户信息,并返回给前端

(5)新建service包

1 修改mapping.UserPasswordDOMapper.xml

要通过用户id查用户密码,无法直接使用自动生成的mapping文件实现,因为自动生成的mapping.UserPasswordDOMapper.xml只提供了selectByPrimaryKey方法。需要在mapping.UserPasswordDOMapper.xml下增加selectByUserId方法;

2 修改dao.UserPasswordDOMapper文件

在dao.UserPasswordDOMapper下新增UserPasswordDO selectByUserId(Integer userId)方法

3 新建model目录的UserModel类

dataobject只是数据库映射,UserModel才是用户领域模型对象,这其中报货用户表和密码表两者信息

4 编写service类下接口方法getUserById(),返回的是UserModel类用户领域对象

5 实现service类下getUserById()

(1)自动注入dao下面userDOMapper,userPasswordDOMapper对象

(2)实现getUserById()方法

(3)编写convertFromDataObject()方法  ,将userDO,userPasswordDO数据库映射转换为UserModel用户领域对象

(4)新建controller包

  1 在controller包下新建UserController类

2 新建UserVO用户领域模型类

3 编写UserController下gerUser()与convertFromModel()方法

6 返回正确信息

controller层获取数据有错时,如果直接错误对象返回给前端,前端不知道怎么显示,因此需要对controller进行处理

解决:

(1)归一化Responsbody成status+data格式

1   当controller层获取数据成功,此时status为空的时候:

  • 新建response包处理返回,并新建CommonReturnType类
      • //对应返回请求的处理结果status:为“success”或者“fail”
      • //当status=success,则data内返回前端需要的json数据
      • //当status = fail,则data内使用通用的错误码格式

  • //定义一个通用的创建方法:

public static CommonReturnType creat(Object result){

    return CommonReturnType.creat(result,"success");

}

  • 即当status为空,就调用另一个status=success的creat(Object result,String status)方法,然后把这个typt的status设置success,把结果result也设置,并返回

public static CommonReturnType creat(Object result,String status){

    CommonReturnType type = new CommonReturnType();//使用函数重载方式创建构造函数;

    type.setStatus(status);

    type.setData(result);

    return type;

}

(2)在controller中返回CommonReturnType 的creat方法,传入参数为controller层获取到的用户领域对象userVO,当获取到了用户领域对象userVO,即staus为空,此时就会将staus设置成success并设置userVO对象为data,返回给前端

2.当controller层获取数据失败,此时status为fail的时候,将data定义为固定错误码的格式

1.新建error包,

2.定义通用错误形式CommonError类

 

3.取出对应Error信息,在enum类中实现

 

4.包装器业务异常类实现

 

5.在controller中即可跑出该异常,该异常类中包含ErrCode和ErrMsg

 

此时只是将异常抛出去到了tomcat容器层,未作处理,因此tomcat容器层只能返回500的错误页面,    结果如下:

6 使用springMvc自带的handlerException取解决通用异常处理

定义exceptionhandler解决未被controller吸收的exception

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值