zoukankan      html  css  js  c++  java
  • shop--5.使用Junit进行验证

    总体思想

    1. DAO层:

    主要任务做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此。

    DAO层的设计:首先是设计DAO层的接口,然后再Spring的配置文件中定义此接口的实现类,然后就可以在模块中调用此接口来进行数据业务的处理,而不用关心此接口的具体实现类是哪一个,显得结构非常清晰。DAO设计的总体规划需要和设计的表,和实现类之间一一对应。

    DAO层所定义的接口里的方法主要是增添改查,以及一些自定义的特殊的对数据库访问的方法。

    配置:DAO层的数据源配置,以及有关数据库连接的参数都在Spring的配置文件中进行配置。

    2. Service层

    主要任务负责业务模块的逻辑应用设计

    Service层的设计:首先设计接口,再设计实现的类,接着在Spring的配置文件中配置起实现的关联。

    优点:封装Service层的业务逻辑有利于通用的业务逻辑的独立性和重复利用性,程序显得非常简洁。

    3. Controller层

    主要任务:负责具体的业务模块流程的控制,在此层里要调用Service层的接口来控制业务流程。

    配置:控制的配置也同样在Spring的配置文件中。

    具体实现:针对具体的业务流程,会有不同的控制器,我们具体的设计过程中可以将流程进行抽象归纳,设计出可以重复利用的子单元流程模块,这样不仅使得成句结构变得清晰,也大大减少了代码量。

    ——————————————————————————————————————————————————————————————————————————————————————————————

    ——————————————————————————————————————————————————————————————————————————————————————————————

    1.验证dao层

    1)创建AreaDao的接口(里面写各种方法 即是对数据的增删改查)

    public interface AreaDao {
        /**
         * @return areaList
         * 列出区域列表
         */
        List<Area> queryArea();
    }

    2)创建AreaDao.xml(在mapper下建,里面写的都是sql语句,关联数据库,是对数据进行实际的操作)

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE mapper 
      PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
      "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="com.ryanxu.o2o.dao.AreaDao">
      <select id="queryArea" resultType="com.ryanxu.o2o.entity.Area">
       SELECT area_id, area_name, priority, create_time, last_edit_time FROM tb_area 
       ORDER BY priority DESC
      </select>
    </mapper>

    3)在test/java/com/ryanxu/o2o下建立BaseTest类(配置Spring和Junit整合,Junit启动时加载springIOC容器)

    /**
     * 配置spring和junit整合,junit启动时加载springIOC容器
     *
     */
    //整合起来的类
    @RunWith(SpringJUnit4ClassRunner.class)
    //告诉junit spring配置文件的位置 就是src/main/resources/spring
    @ContextConfiguration({"classpath:spring/spring-dao.xml","classpath:spring/spring-service.xml"})
    public class BaseTest {
        
    }

    4)创建AreaDaoTest类 继承BaseTest类

    public class AreaDaoTest extends BaseTest{
        @Autowired
        private AreaDao areaDao;
        
        @Test
        public void testQueryArea() {
            List<Area> areaList = areaDao.queryArea();
            assertEquals(2, areaList.size());
        }
    }

    验证Service层

    1)创建AreaService接口

    public interface AreaService {
        List<Area> getAreaList();
    }

    2)service的实现类 AreaServiceImpl

    @Service
    public class AreaServiceImpl implements AreaService{
        @Autowired
        private AreaDao areaDao;
        @Override
        public List<Area> getAreaList() {
            
            return areaDao.queryArea();
        }
    
    }

    3)AreaServiceTest

    public class AreaServiceTest extends BaseTest{
        @Autowired
        private AreaService areaService;
        @Test
        public void testGetAreaList() {
            List<Area> areaList = areaService.getAreaList();
            assertEquals("北区", areaList.get(0).getAreaName());
        }
    }

    验证Controller层

    1)在web.superadmin下创建AreaController类

    @Controller
    @RequestMapping("/superadmin")
    public class AreaController {
        @Autowired
        private AreaService areaService;
        @RequestMapping(value = "/listarea",method = RequestMethod.GET)
        //将返回对象自动转换为json对象给前端
        @ResponseBody
        private Map<String, Object> listArea(){
    
            Map<String, Object> modelMap = new HashMap<String,Object>();
            List<Area> list = new ArrayList<Area>();
            try {
                list = areaService.getAreaList();
                modelMap.put("rows", list);
                modelMap.put("total", list.size());
            }catch (Exception e) {
                e.printStackTrace();
                modelMap.put("success", false);
                modelMap.put("errMsg", e.toString());
            }
    return modelMap;
        }
    }

    2)使用postman 获取json数据

     下面附上postman的下载链接

    链接: https://pan.baidu.com/s/1wkUG_UtFvuLyVky4y4inaQ 密码: rsty

  • 相关阅读:
    ListView滑动位置精准记忆
    2 GPS utility methods
    PingUtil in Android
    Android客户端的图形化拖放操作的设计实现
    腾讯视频去广告代码
    ie9不支持line-height_ie9不支持字体垂直居中兼容问题解决篇_IE9中字体不能垂直居中解决方法
    Web App开发的七个错误
    邮件页面的设计与网页页面设计的区别
    如何在ecshop商品页显示累计销售量
    如何让iframe的背景透明
  • 原文地址:https://www.cnblogs.com/windbag7/p/9322994.html
Copyright © 2011-2022 走看看