SSM框架重构达内NETCTOSS项目——(5)资费列表

实现NETCTOSS项目中资费列表功能

  1. 在数据访问层增加查询全部资费的方法
    • 创建资费表,并插入预置数据:
      • DROP TABLE IF EXISTS `cost`;
        
        create table cost(
        	cost_id			int(4) auto_increment,
        	name			varchar(50)	not null,
        	base_duration		int(11),
        	base_cost		double(7,2),
        	unit_cost		double(7,4),
        	status			char(1),
        	descr			varchar(100),
        	creatime		datetime default now(),
        	startime		datetime,
        	cost_type		char(1),
        	constraint cost_id_pk primary key(cost_id)
        );
        
        insert into cost values (null,'5.9元套餐',20,5.9,0.4,0,'5.9元20小时/月,超出部分0.4元/时',default,default,null);
        insert into cost values (null,'6.9元套餐',40,6.9,0.3,0,'6.9元40小时/月,超出部分0.3元/时',default,default,null);
        insert into cost values (null,'8.5元套餐',100,8.5,0.2,0,'8.5元100小时/月,超出部分0.2元/时',default,default,null);
        insert into cost values (null,'10.5元套餐',200,10.5,0.1,0,'10.5元200小时/月,超出部分0.1元/时',default,default,null);
        insert into cost values (null,'计时收费',null,null,0.5,0,'0.5元/时,不使用不收费',default,default,null);
        insert into cost values (null,'包月',null,20,null,0,'每月20元,不限制使用时间',default,default,null);
        insert into cost values (null,'mm',10,5,null,0,'',default,default,null);
        insert into cost values (null,'nn',10,7,null,0,'',default,default,null);
        insert into cost values (null,'qq',10,4,null,0,'',default,default,null);

    • 创建资费实体类Cost:
      • package entity;
        public class Cost implements Serializable {
        	
            private Integer costId;
            private String name;
            private Integer baseDuration;
            private Double baseCost;
            private Double unitCost;
            private String status;
            private String descr;
            private Timestamp creatime;
            private Timestamp startime;
            private String costType;
        }
      • Generate Getters and Setters
      • Generate hashCode() and equals()
      • Generate toString()
  2. (添加Mapper接口)资费数据访问接口:CostDao:
    • package dao;
      
      import java.util.List;
      
      import entity.Cost;
      
      public interface CostDao {
      	
      	List findAll();
      	
      }

    • 在Mapper(映射文件)配置添加SQL, CostMapper.xml:
      • 
        	
        	

  3. 在业务层增加查询资费的业务方法:
    • 定义业务接口:CostService:定义查询资费方法:
      • public interface CostService {
        	
        	List findAll();
        	
        }

    • 创建资费业务组件CostServiceImpl:
      • @Service("CostService")
        public class CostServiceImpl implements CostService {
        
        	@Resource
        	private CostDao costDao;
        	
        	public List findAll() {
        		
        		return costDao.findAll();
        		
        	}
        
        }
        

  4. 在控制器增加处理查询请求的方法
    • 创建资费模块处理器CostController:
      • @Controller
        @RequestMapping("/cost")
        public class CostController {
        	
        	@Resource
            private CostService costService;
        	
        	@RequestMapping("/find.do")
        	public String find(ModelMap model){
        		List list = costService.findAll();
        		model.addAttribute("costs",list);
        		return "cost/cost_list";
        	}
        	
        }

  5. 在页面上使用JSTL+EL循环输出数据
    • 在WEB-INF/jsp/cost下创建资费列表页面cost_list.jsp:
      • <%@page pageEncoding="utf-8"%>
        <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
        
        
        
        
        达内-NetCTOSS
        
        
        
        
        
        
        
        
        
        
        
        
        
        删除成功!
        资费ID 资费名称 基本时长 基本费用 单位费用 创建时间 开通时间 状态
        ${c.costId} ${c.name} ${c.baseDuration} ${c.baseCost} ${c.unitCost} ${c.creatime} ${c.startime} 开通 暂停

        业务说明:
        1、创建资费时,状态为暂停,记载创建时间;
        2、暂停状态下,可修改,可删除;
        3、开通后,记载开通时间,且开通后不能修改、不能再停用、也不能删除;
        4、业务账号修改资费时,在下月底统一触发,修改其关联的资费ID(此触发动作由程序处理)


  6. 测试:
    • SSM框架重构达内NETCTOSS项目——(5)资费列表_第1张图片
    • 此处NULL值没有显示为0,故在SQL语句中加入IFNULL()函数:
      • IFNULL(base_duration,0) as baseDuration,
        IFNULL(base_cost,0) as baseCost,
        IFNULL(unit_cost,0) as unitCost,

    • 浏览器访问http://localhost:8080/netctoss-trySSM/cost/find.do,浏览器显示结果如下图:
    • SSM框架重构达内NETCTOSS项目——(5)资费列表_第2张图片

你可能感兴趣的:(学习笔记)