Spring Boot整合MyBatis与SpringMVC(PROJECT01_DAY04_01)

构建业务层接口及实现类
参考图-13的设计,进行代码实现,具体业务自己设计(例如查询)。
在这里插入图片描述
图-13
在图-13中,我们的测试类GoodsServiceTests,通过耦合与 GoodsService 接口实现具体商品业务处理。而在 GoodsService 接口的实现类 GoodsServiceImpl 中通过耦合 GoodsDao 接口完成具体的数据逻辑处理。

课堂练习:基于图-13的设计,实现商品信息的查询,并将查询到的数据在测试类中进行输出。具体步骤如下:
第一步:定义pojo对象(Goods)用于存储从数据库查询到的商品信息
第二步:定义dao接口方法,用于查询数据库数据
第三步:定义业务层接口以及实现类,然后在类中添加商品查询的业务方法
第四步:定义单元测试类,对业务层方法进行单元测试

代码实现:

第一步:Goods对象定义

package com.cy.pj.goods.pojo;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* pojo对象,基于此对象封装从数据库查询到的数据
* 思考:对象靠什么存储数据?属性
*/
public class Goods {
        private Long id;//id bigint primary key auto_increment
        private String name;//name varchar(100) not null
        private String remark;//remark text
        private Date createdTime;//createdTime datetime
        public Long getId() {
                return id;
        }
        public void setId(Long id) {
                this.id = id;
        }
        public String getName() {
                return name;
        }
        public void setName(String name) {
                this.name = name;
        }
        public String getRemark() {
                return remark;
        }
        public void setRemark(String remark) {
                this.remark = remark;
        }
        public Date getCreatedTime() {
                return createdTime;
        }
        public void setCreatedTime(Date createdTime) {
                this.createdTime = createdTime;
        }
        @Override
		public String toString() {
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
			return "Goods [id=" + id + ", name=" + name + ", remark=" + remark + ", createdTime=" + sdf.format(createdTime) + "]";
	}
}

第二步:GoodsDao中添加查询方法(一行记录映射为一个Goods对象)

@Select("select id,name,remark,createdTime from tb_goods")//可以用*吗?
List<Goods> findObjects();

第三步:添加GoodsService接口和实现类

package com.cy.pj.goods.service;
import java.util.List;
import com.cy.pj.goods.pojo.Goods;
public interface GoodsService {
           List<Goods> findGoods();
}
package com.cy.pj.goods.service.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.cy.pj.goods.dao.GoodsDao;
import com.cy.pj.goods.pojo.Goods;
import com.cy.pj.goods.service.GoodsService;
/**
* 商品业务层对象,负责业务逻辑处理。
*/
@Service
public class GoodsServiceImpl implements GoodsService {        
        //has a
        @Autowired
        private GoodsDao goodsDao;
        @Override
        public List<Goods> findGoods() {
                long start=System.currentTimeMillis();
                List<Goods> list=goodsDao.findObjects();
                long end=System.currentTimeMillis();
                System.out.println("query time:"+(end-start));
                return list;
        }
}

第四步:添加单元测试类

package com.cy.pj.goods.service;

import java.util.List;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import com.cy.pj.goods.pojo.Goods;
@SpringBootTest
public class GoodsServiceTests {
        @Autowired
        private GoodsService goodsService;
        @Test
        public void testFindGoods() {
                List<Goods> list=goodsService.findGoods();
                //System.out.println(list);//toString()
                for(Goods g:list) {
                        System.out.println(g);//toString()
                }
                list=goodsService.findGoods();//为什么时间变短了?
        }
}

Spring Boot整合SpringMVC应用

3.1 概述

MVC(Model–View–Controller)是软件工程中的一种软件架构模式,基于此模式把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。目的是通过这样的设计使程序结构更加简洁、直观,降低问题的复杂度。其中各个组成部分的职责为:

  • 视图(View) - UI设计人员进行图形界面设计,负责实现与用户交互。
  • 控制器(Controller)- 负责获取请求,处理请求,响应结果。
  • 模型(Model) - 实现业务逻辑,数据逻辑实现。

我们在软件设计时,通常要遵循一定的设计原则。MVC架构模式的设计中,首先基于单一职责原则(SRP-Single responsibility principle)让每个对象各司其职,各尽所能。然后再基于“高内聚,低耦合”的设计思想实现相关层对象之间的交互。这样可以更好提高程序的可维护性和可扩展性。

JavaEE技术体系中,MVC设计思想的实现,如图-14所示:
在这里插入图片描述
图-14

在图-14中,Servlet充当MVC中的Controller,负责调用model处理业务,负责转发或重定向某个页面,在页面(view)上呈现数据。

Spring MVC 是Spring 框架中基于MVC设计思想实现的一个用于处理Web请求的模块。这个模块封装了对Servlet的技术的应用,简化了程序员对请求和响应过程中数据的处理,其简易架构分析如图-15所示:
在这里插入图片描述
图-15

图-15中,核心组件分析:

  • DispatcherServlet :前端控制器, 处理请求的入口。
  • HandlerMapping:映射器对象, 用于管理url与对应controller的映射关系。
  • Interceptors:拦截器,实现请求响应的共性处理。
  • Controller:后端控制器-handler, 负责处理请求的控制逻辑。
  • ViewResolver:视图解析器,解析对应的视图关系(前缀+viewname+后缀)。

Spring MVC完整流程图及过程详解
在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值