我们要实现新的功能,就是生产厂家的新增
先来回顾一下系统架构图

我们数据库这边已经建好表了,接下来要做的就是mapper映射

编辑FactoryMapper.xml文件,加入“添加”的逻辑配置代码块

  1. <!-- 新增 oracle jbdc驱动当这个值为null时,必须告诉它当前字段
  2. 默认值的类型jdbcType=VARCHAR(MyBatis定义),Mysql不用写-->
  3. <insert id="insert" parameterType="cn.hpu.jk.domain.Factory">
  4. insert into factory_c
  5. (FACTORY_ID,FULL_NAME,FACTORY_NAME,CONTACTS,PHONE,MOBILE,FAX,CNOTE,
  6. INSPECTOR,ORDER_NO,CREATE_BY,CREATE_DEPT,CREATE_TIME)
  7. values
  8. (   #{id},
  9. #{fullName,jdbcType=VARCHAR},
  10. #{factoryName,jdbcType=VARCHAR},
  11. #{contacts,jdbcType=VARCHAR},
  12. #{phone,jdbcType=VARCHAR},
  13. #{mobile,jdbcType=VARCHAR},
  14. #{fax,jdbcType=VARCHAR},
  15. #{cnote,jdbcType=VARCHAR},
  16. #{inspector,jdbcType=VARCHAR},
  17. #{orderNo,jdbcType=INTEGER},
  18. #{createBy,jdbcType=VARCHAR},
  19. #{creatDept,jdbcType=VARCHAR},
  20. #{creatTime,jdbcType=TIMESTAMP}
  21. )
  22. </insert>

接下来我们按照系统架构图来继续编写Dao层
其实我们Dao不用写了,因为我们的insert属于日常的增删改查,我们在BaseDaoImpl中已经完成了:

  1. public void insert(T entity) {
  2. this.getSqlSession().insert(ns + ".insert", entity);
  3. }

而我们的FactoryDaoImpl已经继承了BaseDaoImpl,所以不用再写。

接下来编写Service层
我们在FactoryServiceImpl完成insert(Factory factory)方法

  1. @Override
  2. public void insert(Factory factory) {
  3. //设置UUID
  4. factory.setId(UUID.randomUUID().toString());
  5. factoryDao.insert(factory);
  6. }

接下来我们开始写Controller层,在FactoryController中添加下面两个方法

  1. //转向新增页面
  2. @RequestMapping("/basicinfo/factory/tocreate.action")
  3. public String tocreate(){
  4. return "/baseinfo/factory/jFactoryCreate.jsp";
  5. }
  6. //进行新增
  7. @RequestMapping("/basicinfo/factory/insert.action")
  8. public String insert(Factory factory){
  9. factoryService.insert(factory);
  10. return "redirect:/basicinfo/factory/list.action";//转向列表action
  11. }

接下来编写我们的jsp视图页面
在我们写界面的时候,我们首先来探讨一下主页设计时企业开发中常见的两种设计方式
a)帧框架frameset table(业务系统)
Framseset帧集合,不能连接具体的页面
Frame帧,可以连接一个jsp/action

b)Div+css+iframe (大型门户网站)

关于相对路径:
页面中直接写title.action
http://localhost/jk/title.action  前面的路径是浏览器给的。规范。

下面我们编写添加页面jFactoryCreate.jsp:

  1. <%@ page language="java" pageEncoding="UTF-8"%>
  2. <%@ include file="../../base.jsp"%>
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head>
  5. <title>添加厂家信息</title>
  6. </head>
  7. <body>
  8. <form method="post">
  9. <div id="menubar">
  10. <div id="middleMenubar">
  11. <div id="innerMenubar">
  12. <div id="navMenubar">
  13. <ul>
  14. <li id="save"><a href="#" onclick="formSubmit('insert.action','_self');">确定</a></li>
  15. <li id="back"><a href="list.action">返回</a></li>
  16. </ul>
  17. </div>
  18. </div>
  19. </div>
  20. </div>
  21. <div class="textbox" id="centerTextbox">
  22. <div class="textbox-header">
  23. <div class="textbox-inner-header">
  24. <div class="textbox-title">
  25. 新增生产厂家信息
  26. </div>
  27. </div>
  28. </div>
  29. <div>
  30. <div>
  31. <table class="commonTable" cellspacing="1">
  32. <tr>
  33. <td class="columnTitle_mustbe">厂家名称:</td>
  34. <td class="tableContent"><input type="text" name="fullName" /></td>
  35. <td class="columnTitle_mustbe">简称:</td>
  36. <td class="tableContent"><input type="text" name="factoryName" /></td>
  37. </tr>
  38. <tr>
  39. <td class="columnTitle_mustbe">联系人:</td>
  40. <td class="tableContent"><input type="text" name="contacts" /></td>
  41. <td class="columnTitle_mustbe">电话:</td>
  42. <td class="tableContent"><input type="text" name="phone" /></td>
  43. </tr>
  44. <tr>
  45. <td class="columnTitle_mustbe">手机:</td>
  46. <td class="tableContent"><input type="text" name="mobile" /></td>
  47. <td class="columnTitle_mustbe">传真:</td>
  48. <td class="tableContent"><input type="text" name="fax" /></td>
  49. </tr>
  50. <tr>
  51. <td class="columnTitle_mustbe">检验员:</td>
  52. <td class="tableContent"><input type="text" name="inspector" /></td>
  53. <td class="columnTitle_mustbe">排序号:</td>
  54. <td class="tableContent"><input type="text" name="orderNo" /></td>
  55. </tr>
  56. <tr>
  57. <td class="columnTitle_mustbe">备注:</td>
  58. <td class="tableContent"><textarea  name="cnote" style="height:200px;width: 400px"></textarea></td>
  59. </tr>
  60. </table>
  61. </div>
  62. </div>
  63. </form>
  64. </body>
  65. </html>

我们在我们的上一个厂家列表界jFactoryList.jsp面加一个“添加”按钮,指向我们的编辑界面jFactoryCreate.jsp就行了:

  1. <ul>
  2. <li id="view"><a href="#" onclick="formSubmit('toview.action','_self');this.blur();">查看</a></li>
  3. <li id="new"><a href="#" onclick="formSubmit('tocreate.action','_self');this.blur();">添加</a></li>
  4. </ul>

上次没有加log4j的日志配置文件,为了查看项目的运行日志,我们加一下log4j的配置文件log4j.properties:

  1. log4j.rootLogger=info, stdout
  2. #Console
  3. log4j.appender.stdout=org.apache.log4j.ConsoleAppender
  4. log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
  5. log4j.appender.stdout.layout.ConversionPattern=%-5p - %m%n
  6. #LogFile
  7. log4j.appender.file=org.apache.log4j.FileAppender
  8. log4j.appender.file.File=../logs/jklog.log
  9. log4j.appender.file.layout=org.apache.log4j.PatternLayout
  10. log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
  11. #Daily LogFile
  12. log4j.appender.dayfile=org.apache.log4j.DailyRollingFileAppender
  13. log4j.appender.dayfile.File=../logs/jklog.log
  14. log4j.appender.dayfile.DatePattern='.'yyyy-MM-dd'.log'
  15. log4j.appender.dayfile.Append=true
  16. log4j.appender.dayfile.layout=org.apache.log4j.PatternLayout
  17. log4j.appender.dayfile.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
  18. # LOGIN_LOG_P db config ###
  19. log4j.appender.logindb=org.apache.log4j.jdbc.JDBCAppender
  20. log4j.appender.logindb.BufferSize=1
  21. log4j.appender.logindb.driver=com.mysql.jdbc.Driver
  22. log4j.appender.logindb.URL=jdbc:mysql://localhost:3306/jkdb?characterEncoding=utf-8
  23. log4j.appender.logindb.user=root
  24. log4j.appender.logindb.password=root
  25. ##  MySQL
  26. #log4j.appender.logindb.sql=INSERT INTO LOGIN_LOG_P(LOGIN_LOG_ID,LOGIN_NAME,IP_ADDRESS,LOGIN_TIME) VALUES(uuid(),'%X{userId}|%X{userName}','%X{ip}','%d{yyyy-MM-dd HH:mm:ss}')
  27. log4j.appender.logindb.sql=INSERT INTO LOGIN_LOG_P(LOGIN_LOG_ID,LOGIN_NAME,IP_ADDRESS,LOGIN_TIME) VALUES(uuid(),'','',NOW())
  28. log4j.appender.logindb.layout=org.apache.log4j.PatternLayout
  29. log4j.logger.org.apache=INFO
  30. log4j.logger.cn.itcast.jk=DEBUG

然后我们重启服务器,进行测试

我们来添加一个厂家信息:

返回列表界面,发现编辑成功!

【springmvc+mybatis项目实战】杰信商贸-7.生产厂家新增的更多相关文章

  1. 【springmvc+mybatis项目实战】杰信商贸-5.生产厂家DAO+SERVICE+CONTROLLER+JSP+配置文件

    上一篇我们创建了工程和一个Factory的po对象(javaBean),我们也写好了Mapper的映射文件,接下来我们来完成生产厂家的DAO与SERVICE,以及CONTROLLER,还有做显示的JS ...

  2. 【springmvc+mybatis项目实战】杰信商贸-1.项目背景

    1.项目背景杰信项目物流行业的项目,杰信商贸是国际物流行业一家专门从事进出口玻璃器皿贸易的公司.公司总部位于十一个朝代的帝王之都西安,业务遍及欧美.随着公司不断发展壮大,旧的信息系统已无法满足公司的快 ...

  3. 【springmvc+mybatis项目实战】杰信商贸-6.重点知识回顾

    1.重点知识回顾 Maven1)覆盖仓库文件,实际企业开发,公司会架一个测试服务器,在测试服务器中架私服.我们开发人员的程序,都连接私服.当本地没有项目中要使用的jar,Myeclipse maven ...

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

    上一篇我们附件的增删改查功能全部完成.但是我们的附件有一个字段叫做“类型”(ctype),这里我们要使用数据字典,所以对于这一块我们要进行修改. 首先介绍一下数据字典 数据字典它是一个通用结构,跟业务 ...

  5. 【springmvc+mybatis项目实战】杰信商贸-2.数据库配置

    首先我们来了解项目的架构 我们分别使用了MySql和Oracle数据库,即是异构数据库.我们做到一个平台支持多个数据库.数据库建模我们使用Sybase公司的PowerDesigner(以后简称PD), ...

  6. 【springmvc+mybatis项目实战】杰信商贸-3.需求分析与数据库建模

    开发步骤需求:生产厂家信息维护基础表FACTORY_C 1.业务需求:a)<需求说明书>     1)描述业务功能     生产厂家模块     功能:为在购销合同模块中的货物信息和附件信 ...

  7. IDEA中maven搭建Spring+SpringMVC+mybatis项目

    一.介绍 使用IDEA搭建maven web项目,整合框架Spring+SpringMVC+mybatis 项目结构图:

  8. 通过IntelliJ IDEA创建maven+springmvc+mybatis项目

    第一个springmvc+mybatis项目,通过学习极客学院视频(视频案例通过eclipse搭建,网址为http://www.jikexueyuan.com/course/1430.html),发现 ...

  9. springBoot 整合 mybatis 项目实战

    二.springBoot 整合 mybatis 项目实战   前言 上一篇文章开始了我们的springboot序篇,我们配置了mysql数据库,但是我们sql语句直接写在controller中并且使用 ...

随机推荐

  1. vlc源码分析(六) 调用OpenMAX硬解码H.265

    H.265(HEVC)编码格式能够在得到相同编码质量视频的前提下,使用相当于H.264(AVC)一半的存储容量,虽然H.265的算法复杂度比H.264高一个数量级,但是硬件水平在不断提高,因此H.26 ...

  2. tortoisegit 学习

    注:陈刚在Ubuntu虚拟机架设了git的服务器,用于管理公司的代码工程: tortoisegit是TortoiseSVN的Git版本,tortoisegit用于迁移TortoiseSVN到Torto ...

  3. iOS之Custom UIViewController Transition

    本文学习下自定义ViewController的切换,从无交互的到交互式切换. (本文已同步到我的小站:icocoa,欢迎访问.) iOS7中定义了3个协议: UIViewControllerTrans ...

  4. Objective-C基础知识之“类”

    Objective-C语言是iOS开发的专用语言,虽然现在在逐步被swift语言取代,但是仍可以作为基础学习,学会Objective-C之后入手swift也是相当快速.今天我来简谈一下关于OC中的类. ...

  5. MySQL学习【第十一篇存储引擎之事务解释】

    一.innodb的核心特点------事务 1.什么是事务 在一组数据操作执行步骤,这些步骤被视为一个单元,主要针对dml语句(update.delete.insert) 2.事务ACID特性 Ato ...

  6. Django学习笔记6(iframe、外键插入)

    1.{%include 'index.html'%i} 平时很好用的iframe在django里面的不是很好用 django里面提供了{%include 'index.html'%i}的方式来取代了i ...

  7. mysql如何把一个表直接拷贝到一个新的表

    一:在新表已经建立好的情况下 1,拷贝所有的字段 insert into new_table select * from old_table 2,拷贝部分字段表 insert into new_tab ...

  8. 基于 HTML5 Canvas 的 Web SCADA 组态电机控制面板

    前言 HT For Web 提供完整的基于 HTML5 图形界面组件库.您可以轻松构建现代化的,跨桌面和移动终端的企业应用,无需担忧跨平台兼容性,及触屏手势交互等棘手问题.也可用于快速创建和部署,高度 ...

  9. 解决在 win10 下 vs2017 中创建 MFC 程序拖放文件接收不到 WM_DROPFILES 消息问题

    解决方案 这个问题是由于 win10 的安全机制搞的鬼,即使以管理员权限运行也不行,因为它会把 WM_DROPFILES 消息过滤掉,那怎么办呢?只需在窗口初始化 OnInitDialog() 里添加 ...

  10. 【原创】frozenset集合函数入门及实例

    函数作用 frozenset() 返回一个冻结的集合,冻结后集合不能再添加或删除任何元素.与之对应的是set函数,set无序排序且不重复,是可变的,有add(),remove()等方法. 函数原型 f ...