我們要實現新的功能,就是生產廠家的新增
先來回顧一下系統架構圖
我們數據庫這邊已經建好表了,接下來要做的就是mapper映射
編輯FactoryMapper.xml文件,加入“添加”的邏輯配置代碼塊
- <!-- 新增 oracle jbdc驅動當這個值為null時,必須告訴它當前字段
- 默認值的類型jdbcType=VARCHAR(MyBatis定義),Mysql不用寫-->
- <insert id="insert" parameterType="cn.hpu.jk.domain.Factory">
- insert into factory_c
- (FACTORY_ID,FULL_NAME,FACTORY_NAME,CONTACTS,PHONE,MOBILE,FAX,CNOTE,
- INSPECTOR,ORDER_NO,CREATE_BY,CREATE_DEPT,CREATE_TIME)
- values
- ( #{id},
- #{fullName,jdbcType=VARCHAR},
- #{factoryName,jdbcType=VARCHAR},
- #{contacts,jdbcType=VARCHAR},
- #{phone,jdbcType=VARCHAR},
- #{mobile,jdbcType=VARCHAR},
- #{fax,jdbcType=VARCHAR},
- #{cnote,jdbcType=VARCHAR},
- #{inspector,jdbcType=VARCHAR},
- #{orderNo,jdbcType=INTEGER},
- #{createBy,jdbcType=VARCHAR},
- #{creatDept,jdbcType=VARCHAR},
- #{creatTime,jdbcType=TIMESTAMP}
- )
- </insert>
接下來我們按照系統架構圖來繼續編寫Dao層
其實我們Dao不用寫了,因為我們的insert屬於日常的增刪改查,我們在BaseDaoImpl中已經完成了:
- public void insert(T entity) {
- this.getSqlSession().insert(ns + ".insert", entity);
- }
而我們的FactoryDaoImpl已經繼承了BaseDaoImpl,所以不用再寫。
接下來編寫Service層
我們在FactoryServiceImpl完成insert(Factory factory)方法
- @Override
- public void insert(Factory factory) {
- //設置UUID
- factory.setId(UUID.randomUUID().toString());
- factoryDao.insert(factory);
- }
接下來我們開始寫Controller層,在FactoryController中添加下面兩個方法
- //轉向新增頁面
- @RequestMapping("/basicinfo/factory/tocreate.action")
- public String tocreate(){
- return "/baseinfo/factory/jFactoryCreate.jsp";
- }
- //進行新增
- @RequestMapping("/basicinfo/factory/insert.action")
- public String insert(Factory factory){
- factoryService.insert(factory);
- return "redirect:/basicinfo/factory/list.action";//轉向列表action
- }
接下來編寫我們的jsp視圖頁面
在我們寫界面的時候,我們首先來探討一下主頁設計時企業開發中常見的兩種設計方式
a)幀框架frameset table(業務系統)
Framseset幀集合,不能連接具體的頁面
Frame幀,可以連接一個jsp/action
b)Div+css+iframe (大型門戶網站)
關於相對路徑:
頁面中直接寫title.action
http://localhost/jk/title.action 前面的路徑是瀏覽器給的。規范。
下面我們編寫添加頁面jFactoryCreate.jsp:
- <%@ page language="java" pageEncoding="UTF-8"%>
- <%@ include file="../../base.jsp"%>
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <title>添加廠家信息</title>
- </head>
- <body>
- <form method="post">
- <div id="menubar">
- <div id="middleMenubar">
- <div id="innerMenubar">
- <div id="navMenubar">
- <ul>
- <li id="save"><a href="#" onclick="formSubmit('insert.action','_self');">確定</a></li>
- <li id="back"><a href="list.action">返回</a></li>
- </ul>
- </div>
- </div>
- </div>
- </div>
- <div class="textbox" id="centerTextbox">
- <div class="textbox-header">
- <div class="textbox-inner-header">
- <div class="textbox-title">
- 新增生產廠家信息
- </div>
- </div>
- </div>
- <div>
- <div>
- <table class="commonTable" cellspacing="1">
- <tr>
- <td class="columnTitle_mustbe">廠家名稱:</td>
- <td class="tableContent"><input type="text" name="fullName" /></td>
- <td class="columnTitle_mustbe">簡稱:</td>
- <td class="tableContent"><input type="text" name="factoryName" /></td>
- </tr>
- <tr>
- <td class="columnTitle_mustbe">聯系人:</td>
- <td class="tableContent"><input type="text" name="contacts" /></td>
- <td class="columnTitle_mustbe">電話:</td>
- <td class="tableContent"><input type="text" name="phone" /></td>
- </tr>
- <tr>
- <td class="columnTitle_mustbe">手機:</td>
- <td class="tableContent"><input type="text" name="mobile" /></td>
- <td class="columnTitle_mustbe">傳真:</td>
- <td class="tableContent"><input type="text" name="fax" /></td>
- </tr>
- <tr>
- <td class="columnTitle_mustbe">檢驗員:</td>
- <td class="tableContent"><input type="text" name="inspector" /></td>
- <td class="columnTitle_mustbe">排序號:</td>
- <td class="tableContent"><input type="text" name="orderNo" /></td>
- </tr>
- <tr>
- <td class="columnTitle_mustbe">備注:</td>
- <td class="tableContent"><textarea name="cnote" style="height:200px;width: 400px"></textarea></td>
- </tr>
- </table>
- </div>
- </div>
- </form>
- </body>
- </html>
我們在我們的上一個廠家列表界jFactoryList.jsp面加一個“添加”按鈕,指向我們的編輯界面jFactoryCreate.jsp就行了:
- <ul>
- <li id="view"><a href="#" onclick="formSubmit('toview.action','_self');this.blur();">查看</a></li>
- <li id="new"><a href="#" onclick="formSubmit('tocreate.action','_self');this.blur();">添加</a></li>
- </ul>
上次沒有加log4j的日志配置文件,為了查看項目的運行日志,我們加一下log4j的配置文件log4j.properties:
- log4j.rootLogger=info, stdout
- #Console
- log4j.appender.stdout=org.apache.log4j.ConsoleAppender
- log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
- log4j.appender.stdout.layout.ConversionPattern=%-5p - %m%n
- #LogFile
- log4j.appender.file=org.apache.log4j.FileAppender
- log4j.appender.file.File=../logs/jklog.log
- log4j.appender.file.layout=org.apache.log4j.PatternLayout
- log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
- #Daily LogFile
- log4j.appender.dayfile=org.apache.log4j.DailyRollingFileAppender
- log4j.appender.dayfile.File=../logs/jklog.log
- log4j.appender.dayfile.DatePattern='.'yyyy-MM-dd'.log'
- log4j.appender.dayfile.Append=true
- log4j.appender.dayfile.layout=org.apache.log4j.PatternLayout
- log4j.appender.dayfile.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
- # LOGIN_LOG_P db config ###
- log4j.appender.logindb=org.apache.log4j.jdbc.JDBCAppender
- log4j.appender.logindb.BufferSize=1
- log4j.appender.logindb.driver=com.mysql.jdbc.Driver
- log4j.appender.logindb.URL=jdbc:mysql://localhost:3306/jkdb?characterEncoding=utf-8
- log4j.appender.logindb.user=root
- log4j.appender.logindb.password=root
- ## MySQL
- #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}')
- log4j.appender.logindb.sql=INSERT INTO LOGIN_LOG_P(LOGIN_LOG_ID,LOGIN_NAME,IP_ADDRESS,LOGIN_TIME) VALUES(uuid(),'','',NOW())
- log4j.appender.logindb.layout=org.apache.log4j.PatternLayout
- log4j.logger.org.apache=INFO
- log4j.logger.cn.itcast.jk=DEBUG
然后我們重啟服務器,進行測試
我們來添加一個廠家信息:

返回列表界面,發現編輯成功!

