码迷,mamicode.com
首页 > 编程语言 > 详细

【springmvc+mybatis项目实战】杰信商贸-4.maven依赖+PO对+映射文件

时间:2018-04-12 15:25:32      阅读:241      评论:0      收藏:0      [点我收藏+]

标签:vax   b2c   数据   tle   base   ali   util   下拉框   HERE   

上一篇我们附件的增删改查功能全部完成。但是我们的附件有一个字段叫做“类型”(ctype),这里我们要使用数据字典,所以对于这一块我们要进行修改。

首先介绍一下数据字典

数据字典
它是一个通用结构,跟业务无关;数据字典表是用户可以动态扩充内容。它的分类用户不能改。分类是系统上线时,开发人员进行初始化。(分类是在代码中写死的,分类下的内容,用户可以动态扩充)

a)一般它由编号+名称构成。
1)性别:0101男,0102女
2)包装单位:0201 PCS,0202 SETS
3)区县:02901西安市 02902宝鸡市
通用的数据字典,它可以存放多个分类,结构必须是ID+NAME
TYPE+ID+NAME 

b)数据字典都在哪里使用?
单选的组合;下拉框

我们附件的类型就是由数据字典来决定的
这里是我们的数据字典表
技术分享图片

可以观察到我们附件的类型的数据字典在其中:
技术分享图片

查询一下我们的附件的数据字典
(查询的sql语句为select order_no,name from sys_code_b
where parent_id =‘0104‘)
技术分享图片


那么,下面我们就专门针对数据字典创建一套业务,首先攥写它的实体类SysCode.java:

[java] view plain copy
 
  1. package cn.hpu.jk.domain;  
  2.   
  3. public class SysCode {  
  4.     private String id;  
  5.     private Integer orderNo;  
  6.     private String name;  
  7.     public String getId() {  
  8.         return id;  
  9.     }  
  10.     public void setId(String id) {  
  11.         this.id = id;  
  12.     }  
  13.     public Integer getOrderNo() {  
  14.         return orderNo;  
  15.     }  
  16.     public void setOrderNo(Integer orderNo) {  
  17.         this.orderNo = orderNo;  
  18.     }  
  19.     public String getName() {  
  20.         return name;  
  21.     }  
  22.     public void setName(String name) {  
  23.         this.name = name;  
  24.     }  
  25.       
  26. }  


然后编写它的Mapper映射文件SysCodeMapper.xml:
(由于我们的数据字典表暂时只用于查询,所以我们无需添加增删改的sql配置)

[html] view plain copy
 
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE mapper  
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"  
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">  
  5.   
  6.   
  7. <mapper namespace="cn.hpu.jk.mapper.SysCodeMapper">  
  8.     <resultMap type="cn.hpu.jk.domain.SysCode" id="sysCodeRM">  
  9.         <id property="id" column="SYS_CODE_ID"/>  
  10.         <id property="orderNo" column="ORDER_NO"/>  
  11.         <id property="name" column="NAME"/>  
  12.     </resultMap>  
  13.       
  14.     <!-- 查询某个分类下的内容 -->  
  15.     <select id="find" parameterType="map" resultMap="sysCodeRM">  
  16.         select sys_code_id,order_no,name from sys_code_b  
  17.         where 1=1  
  18.         <if test="parentId != null"> and PARENT_ID=#{parentId}</if>  
  19.     </select>  
  20.       
  21. </mapper>  


我们在给它写一个Dao层
SysCodeDao.java

[java] view plain copy
 
  1. package cn.hpu.jk.dao;  
  2.   
  3. import cn.hpu.jk.domain.SysCode;  
  4.   
  5. public interface SysCodeDao extends BaseDao<SysCode>{  
  6.       
  7. }  


SysCodeDaoImpl.java:

[java] view plain copy
 
  1. package cn.hpu.jk.dao.impl;  
  2.   
  3. import org.springframework.stereotype.Repository;  
  4.   
  5. import cn.hpu.jk.dao.SysCodeDao;  
  6. import cn.hpu.jk.domain.SysCode;  
  7.   
  8.   
  9. @Repository //为了包扫描的时候这个Dao被扫描到  
  10. public class SysCodeDaoImpl extends BaseDaoImpl<SysCode> implements SysCodeDao{  
  11.       
  12.     public SysCodeDaoImpl(){  
  13.         //设置命名空间  
  14.         super.setNs("cn.hpu.jk.mapper.SysCodeMapper");  
  15.     }  
  16.   
  17.   
  18. }  


接下来是Service层:
SysCodeService.java:

[java] view plain copy
 
  1. package cn.hpu.jk.service;  
  2.   
  3. import java.util.List;  
  4. import java.util.Map;  
  5.   
  6. import cn.hpu.jk.domain.SysCode;  
  7.   
  8. public interface SysCodeService {  
  9.     public List<SysCode> find(Map paraMap);   //查询  
  10. }  


SysCodeServiceImpl.java:

[java] view plain copy
 
  1. package cn.hpu.jk.service.impl;  
  2.   
  3. import java.util.List;  
  4. import java.util.Map;  
  5.   
  6. import javax.annotation.Resource;  
  7.   
  8. import cn.hpu.jk.dao.SysCodeDao;  
  9. import cn.hpu.jk.domain.SysCode;  
  10. import cn.hpu.jk.service.SysCodeService;  
  11.   
  12.   
  13. public class SysCodeServiceImpl implements SysCodeService{  
  14.   
  15.   
  16.     @Resource  
  17.     SysCodeDao sysCodeDao;  
  18.   
  19.   
  20.     @Override  
  21.     public List<SysCode> find(Map paraMap) {  
  22.         return sysCodeDao.find(paraMap);  
  23.     }  
  24. }  


我们实际直接使用它的Dao都是可以的,但是我们加了Service以防以后的拓展。

这里我们在附件的Service接口中添加获取数据字典的分类列表的方法(getCtypeList();):

[java] view plain copy
 
  1. package cn.hpu.jk.service;  
  2.   
  3. import java.io.Serializable;  
  4. import java.util.List;  
  5. import java.util.Map;  
  6.   
  7. import cn.hpu.jk.domain.ExtCproduct;  
  8. import cn.hpu.jk.domain.SysCode;  
  9. import cn.hpu.jk.pagination.Page;  
  10.   
  11.   
  12. public interface ExtCproductService {  
  13.     public List<ExtCproduct> findPage(Page page); //分页查询  
  14.     public List<ExtCproduct> find(Map paraMap);       //带条件查询,条件可以为null,既没有条件;返回list对象集合  
  15.     public ExtCproduct get(Serializable id);                //只查询一个,常用于修改  
  16.     public void insert(ExtCproduct extCproduct);        //插入,用实体作为参数  
  17.     public void update(ExtCproduct extCproduct);        //修改,用实体作为参数  
  18.     public void deleteById(Serializable id);    //按id删除,删除一条;支持整数型和字符串类型ID  
  19.     public void delete(Serializable[] ids); //批量删除;支持整数型和字符串类型ID  
  20.       
  21.     public List<SysCode> getCtypeList(); //获取分类列表  
  22. }  


然后在附件的Service实现方法中来实现getCtypeList()方法:

[java] view plain copy
 
  1. package cn.hpu.jk.service.impl;  
  2.   
  3. import java.io.Serializable;  
  4. import java.util.HashMap;  
  5. import java.util.List;  
  6. import java.util.Map;  
  7. import java.util.UUID;  
  8.   
  9. import javax.annotation.Resource;  
  10.   
  11. import org.springframework.stereotype.Service;  
  12.   
  13. import cn.hpu.jk.Util.UtilFuns;  
  14. import cn.hpu.jk.dao.ExtCproductDao;  
  15. import cn.hpu.jk.dao.SysCodeDao;  
  16. import cn.hpu.jk.domain.ExtCproduct;  
  17. import cn.hpu.jk.domain.SysCode;  
  18. import cn.hpu.jk.pagination.Page;  
  19. import cn.hpu.jk.service.ExtCproductService;  
  20.   
  21.   
  22. @Service  
  23. public class ExtCproductServiceImpl implements ExtCproductService{  
  24.       
  25.     @Resource  
  26.     ExtCproductDao extCproductDao;  
  27.     @Resource  
  28.     SysCodeDao sysCodeDao;  
  29.       
  30.     //中间其它代码省略......      
  31.   
  32.   
  33.     @Override  
  34.     public List<SysCode> getCtypeList() {  
  35.         Map paraMap=new HashMap();  
  36.         paraMap.put("parentId", "0104");//0104是附件表的分类  
  37.         return sysCodeDao.find(paraMap);  
  38.     }  
  39.   
  40.   
  41. }  


分类获取工作做完,我们在附件的Controller的新增和修改方法中获取分类列表,用于在jsp界面的分类下拉菜单中填充分类值:

[java] view plain copy
 
  1. //转向新增页面  
  2. @RequestMapping("/cargo/extcproduct/tocreate.action")  
  3. public String tocreate(String contractProductId,Model model){  
  4.     //传递购销合同Id  
  5.     model.addAttribute("contractProductId", contractProductId);  
  6.       
  7.     //准备生产厂家的下拉列表  
  8.     List<Factory> factoryList=factoryService.getFactoryList();  
  9.     model.addAttribute("factoryList",factoryList);  
  10.       
  11.     //某个货物下的附件  
  12.     Map<String,String> paraMap=new HashMap<String,String>();  
  13.     paraMap.put("contractProductId", contractProductId);  
  14.     List<ExtCproduct> dataList=extCproductService.find(paraMap);  
  15.     model.addAttribute("dataList", dataList);  
  16.       
  17.     //准备分类下拉列表  
  18.     List<SysCode> ctypeList=extCproductService.getCtypeList();  
  19.     model.addAttribute("ctypeList", ctypeList);  
  20.       
  21.     return "/cargo/contract/jExtCproductCreate.jsp";//货物的新增页面  
  22. }  
  23.   
  24. //转向修改页面  
  25. @RequestMapping("/cargo/extcproduct/toupdate.action")  
  26. public String toupdate(String id,Model model){  
  27.     ExtCproduct obj=extCproductService.get(id);  
  28.     model.addAttribute("obj", obj);  
  29.       
  30.     //准备生产厂家的下拉列表  
  31.     List<Factory> factoryList=factoryService.getFactoryList();  
  32.     model.addAttribute("factoryList",factoryList);  
  33.       
  34.     //准备分类下拉列表  
  35.     List<SysCode> ctypeList=extCproductService.getCtypeList();  
  36.     model.addAttribute("ctypeList", ctypeList);  
  37.       
  38.     return "/cargo/contract/jExtCproductUpdate.jsp";//货物的修改页面  
  39. }  


然后我们把编辑附件的jsp界面中之前的分类input款改为下拉select框,然后利用C标签的遍历将分类值分布至select框的每个option选项中:
(下面代码更改的部分是ctype部分)

[java] view plain copy
 
  1. <%@ page language="java" pageEncoding="UTF-8"%>  
  2. <%@ include file="../../base.jsp"%>  
  3. <%@ include file="../../baselist.jsp"%>  
  4. <html xmlns="http://www.w3.org/1999/xhtml">  
  5. <head>  
  6.     <title>添加货物信息</title>  
  7.     <script type="text/javascript">  
  8.         //设置冗余的生产厂家名称  
  9.         function setFactoryName(val){  
  10.             var ele=document.getElementById("factoryName");  
  11.             ele.value=val;  
  12.         }  
  13.     </script>  
  14. </head>  
  15. <body>  
  16. <form method="post">  
  17. <div id="menubar">  
  18. <div id="middleMenubar">  
  19. <div id="innerMenubar">  
  20.     <div id="navMenubar">  
  21. <ul>  
  22. <li id="save"><a href="#" onclick="formSubmit(‘insert.action‘,‘_self‘);">确定</a></li>  
  23. <li id="back"><a href="${ctx}/cargo/contract/list.action">返回</a></li>  
  24. </ul>  
  25.     </div>  
  26. </div>  
  27. </div>  
  28. </div>  
  29.        
  30. <div class="textbox" id="centerTextbox">  
  31.       
  32.     <div class="textbox-header">  
  33.     <div class="textbox-inner-header">  
  34.     <div class="textbox-title">  
  35.         添加附件信息  
  36.     </div>   
  37.     </div>  
  38.     </div>  
  39. <div>  
  40.    
  41.     <div>  
  42.         <table class="commonTable" cellspacing="1">  
  43.             <input type="hidden" name="contractProductId" value="${contractProductId}"/>  
  44.                 <tr>  
  45.                     <td class="columnTitle_mustbe">厂家名称:</td>  
  46.                     <td class="tableContent">  
  47.                     <select name="factoryId" onchange="setFactoryName(this.options[this.selectedIndex].text);">  
  48.                         <option value="">--请选择--</option>  
  49.                         <c:forEach items="${factoryList}" var="f">  
  50.                         <option value="${f.id}">${f.factoryName }</option>  
  51.                         </c:forEach>  
  52.                         <input type="hidden" id="factoryName" name="factoryName" value=""/>  
  53.                     </select>  
  54.                     </td>  
  55.                     <td class="columnTitle_mustbe">货号:</td>  
  56.                     <td class="tableContent"><input type="text" name="productNo" /></td>  
  57.                 </tr>  
  58.                   
  59.                 <tr>  
  60.                     <td class="columnTitle_mustbe">货物照片:</td>  
  61.                     <td class="tableContent"><input type="text" name="productImage" /></td>  
  62.                     <td class="columnTitle_mustbe">分类</td>  
  63.                     <td class="tableContent">  
  64.                         <select name="ctype">  
  65.                         <option value="">--请选择--</option>  
  66.                         <c:forEach items="${ctypeList}" var="cl">  
  67.                         <option value="${cl.orderNo}">${cl.name }</option>  
  68.                         </c:forEach>  
  69.                         </select>  
  70.                     </td>  
  71.                 </tr>  
  72.                   
  73.                 <tr>  
  74.                     <td class="columnTitle_mustbe">数量</td>  
  75.                     <td class="tableContent"><input type="text" name="cnumber" /></td>  
  76.                     <td class="columnTitle_mustbe">单价:</td>  
  77.                     <td class="tableContent"><input type="text" name="price" /></td>  
  78.                 </tr>  
  79.                   
  80.                  <tr>  
  81.                     <td class="columnTitle_mustbe">包装单位:</td>  
  82.                     <td class="tableContent"><input type="text" name="packingUnit" /></td>  
  83.                     <td class="columnTitle_mustbe">排序号:</td>  
  84.                     <td class="tableContent"><input type="text" name="orderNo" /></td>  
  85.                 </tr>  
  86.                   
  87.                 <tr>  
  88.                     <td class="columnTitle_mustbe">货物描述:</td>  
  89.                     <td class="tableContent"><textarea  name="productDesc" style="height:200px;width: 400px"></textarea></td>  
  90.                     <td class="columnTitle_mustbe">要求:</td>  
  91.                     <td class="tableContent"><textarea  name="productRequest" style="height:200px;width: 400px"></textarea></td>  
  92.                 </tr>  
  93.             </table>  
  94.     </div>  
  95. </div>  
  96.   
  97. <div class="textbox" id="centerTextbox">  
  98.   <div class="textbox-header">  
  99.   <div class="textbox-inner-header">  
  100.   <div class="textbox-title">  
  101.     附件列表  
  102.   </div>   
  103.   </div>  
  104.   </div>  
  105.     
  106. <div>  
  107. <div class="eXtremeTable" >  
  108. <table id="ec_table" class="tableRegion" width="98%" >  
  109.     <thead>  
  110.     <tr>  
  111.         <td class="tableHeader"><input type="checkbox" name="selid" onclick="checkAll(‘id‘,this)"></td>  
  112.         <td class="tableHeader">序号</td>  
  113.         <td class="tableHeader">厂家名称</td>  
  114.         <td class="tableHeader">货号</td>  
  115.         <td class="tableHeader">数量</td>  
  116.         <td class="tableHeader">包装单位</td>  
  117.         <td class="tableHeader">单价</td>  
  118.         <td class="tableHeader">总金额</td>  
  119.         <td class="tableHeader">操作</td>  
  120.     </tr>  
  121.     </thead>  
  122.     <tbody class="tableBody" >  
  123.       
  124.     <c:forEach items="${dataList}" var="o" varStatus="status">  
  125.     <tr class="odd" onmouseover="this.className=‘highlight‘" onmouseout="this.className=‘odd‘" >  
  126.         <td><input type="checkbox" name="id" value="${o.id}"/></td>  
  127.         <td>${status.index+1}</td>  
  128.         <td>${o.factoryName}</td>  
  129.         <td>${o.productNo}</td>  
  130.         <td>${o.cnumber}</td>  
  131.         <td>${o.packingUnit}</td>  
  132.         <td>${o.price }</td>  
  133.         <td>${o.amount}</td>  
  134.         <td>  
  135.             <a href="${ctx}/cargo/extcproduct/toupdate.action?id=${o.id}">[修改] </a>  
  136.             <a href="${ctx}/cargo/extcproduct/delete.action?id=${o.id}">[删除]</a>  
  137.         </td>  
  138.     </tr>  
  139.     </c:forEach>  
  140.       
  141.     </tbody>  
  142. </table>  
  143. </div>  
  144.    
  145. </div>  
  146.   
  147.   
  148. </form>  
  149. </body>  
  150. </html>  


同时别忘记将我们的修改页面update也更改一下

[html] view plain copy
 
  1. <select name="ctype">  
  2. <option value="">--请选择--</option>  
  3. <c:forEach items="${ctypeList}" var="cl">  
  4. <option value="${cl.orderNo}" <c:if test="${obj.ctype==cl.orderNo}">selected</c:if>>${cl.name }</option>  
  5. </c:forEach>  
  6. </select>  


测试:
技术分享图片


数据字典添加成功!

【springmvc+mybatis项目实战】杰信商贸-4.maven依赖+PO对+映射文件

标签:vax   b2c   数据   tle   base   ali   util   下拉框   HERE   

原文地址:https://www.cnblogs.com/yxllovetm/p/8807485.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!