一 前台界面:
前台界面需要显示一个商品类型管理的按钮选项,此项目中是在menuBar中添加的按钮连接
点击商品类型管理的按钮进入一个列表界面,显示数据库中已经存在的商品类型列表,本页面的功能有编辑,删除,追加和取消。
点击编辑按钮进入对商品类型的编辑,输入内容为空或添加商品类型与已有类型相同时提示错误信息。
点击追加按钮进入追加页面添加时,同样,输入内容为空或添加商品类型与已有类型相同时提示错误信息。
二 后台功能实现:
数据库中添加一个商品类型的表commodity_type,并添加三个元素分别为ID,类型名和备注:commodity_type_id,commodity_type_name,commodity_type_note;
在CommodityTypeForm .java中定义一下这三个变量,并使用标签@Data直接引用Get,Set方法,不用再写方法体。为需要进行vailudation的属性添加相应的标签比如这里的Name需要设置为不能为空或者不能与数据库中已有的数据重复:
@NotEmpty(field="商品类型", message="{errors.required}")
@Digits ( message="{errors.similar}",fraction=0,integer=0)
private String commodityTypeName;
3.为每个页面中的按钮编写实现功能的代码,主要涉及到CommodityTypeController.java(主要涉及各页面的跳转和一些功能),CommodityTypeService.java(都是调用存放数据库中数据的一些方法),CommodityTypeSqlMap.java(数据库中所要进行的一些操作,如查询,插入,更新数据的语句) 详细代码如下
CommodityTypeForm .java
package cn.agriculture.web.form;
import cn.agriculture.common.validator.constraints.NotEmpty;
import lombok.Data;
@Data ---------------引用一个数据标签,可以不用写GET,SET方法
public class CommodityTypeForm {
private String commodityTypeId;
@NotEmpty(field="商品类型", message="{errors.required}")
private String commodityTypeName;
private String commodityTypeNote;
private String updateTime;
}
CommodityTypeService.java
package cn.agriculture.web.service;
import java.util.List;
import jp.terasoluna.fw.dao.QueryDAO;
import jp.terasoluna.fw.dao.UpdateDAO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import cn.agriculture.web.form.CommodityTypeForm;
@Service
public class CommodityTypeService {
@Autowired
QueryDAO queryDao;
@Autowired
UpdateDAO updateDao;
public List<CommodityTypeForm> searchCommodityTypeList() {
List<CommodityTypeForm>
result = queryDao.executeForObjectList("Commodity_type.selectCommodityTypeList", null);
return result;
}
public CommodityTypeForm searchCommodityType(CommodityTypeForm frm) {
CommodityTypeForm result = queryDao.executeForObject("Commodity_type.selectCommodityType", frm, CommodityTypeForm.class);
return result;
}
public CommodityTypeForm searchCommodityTypeName(CommodityTypeForm frm) {
CommodityTypeForm result = queryDao.executeForObject("Commodity_type.selectCommodityTypeName", frm, CommodityTypeForm.class);
return result;
}
public boolean addCommodityType(CommodityTypeForm frm) {
//
Integer sequee = queryDao.executeForObject("Commodity_type.getSeq", null, Integer.class);
String commoditytypeId = frm.getUpdateTime().substring(0, 4) + String.format("%011d", sequee);
frm.setCommodityTypeId(commoditytypeId);
int result = updateDao.execute("Commodity_type.addCommodityType", frm);
if (result == 1) {
return true;
}
return false;
}
public boolean editCommodityType(CommodityTypeForm frm) {
int result = updateDao.execute("Commodity_type.updateCommodityType", frm);
if (result == 1) {
return true;
}
return false;
}
public boolean delCommodityType(CommodityTypeForm frm) {
int result = updateDao.execute("Commodity_type.delCommodityType", frm);
if (result == 1) {
return true;
}
return false;
}
}
ItemListComponent.java
public class ItemListComponent {
@Autowired
QueryDAO queryDao;
//设置下拉列表项----下拉列表中的标签为Label,显示的值为从列表中select出的数据,作为value值
public List<Item> getCommodityTypeList() {
return queryDao.executeForObjectList("Common.selectCommodityType", null);
}
public String getCommodityTypeLabel(String commoditytypeValue) {
return queryDao.executeForObject("Common.selectCommodityTypeLabel", commoditytypeValue,String.class);
}
}
CommodityTypeSqlMap.java
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap
PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd">
<!-- SqlMap定義 -->
<sqlMap namespace="Commodity_type">
<select id="selectCommodityTypeList"
parameterClass="cn.agriculture.web.form.CommodityTypeForm"
resultClass="cn.agriculture.web.form.CommodityTypeForm">
SELECT
commodity_type.commodity_type_id as commodityTypeId,
commodity_type.commodity_type_name as commodityTypeName,
commodity_type.commodity_type_note as commodityTypeNote
FROM commodity_type
</select>
<select id="selectCommodityType"
parameterClass="cn.agriculture.web.form.CommodityTypeForm"
resultClass="cn.agriculture.web.form.CommodityTypeForm">
SELECT commodity_type.commodity_type_id as commodityTypeId,
commodity_type.commodity_type_name as commodityTypeName,
commodity_type.commodity_type_note as commodityTypeNote
FROM commodity_type
WHERE commodity_type.commodity_type_id = #commodityTypeId#
</select>
<!-- 设定 commodityTypeId 自增1 -->
<select id="getSeq" resultClass="java.lang.Integer">
SELECT _nextval('commodityTypeId')
</select>
<insert id="addCommodityType" parameterClass="cn.agriculture.web.form.CommodityTypeForm">
INSERT INTO commodity_type(commodity_type_id,commodity_type_name,commodity_type_note)
VALUES(#commodityTypeId#, #commodityTypeName#, #commodityTypeNote#)
*********//(检验输入内容是否已存在数据库中,不存在时可以插入到数据库中????)*********
WHERE no exists (select * from commodity_type where commodity_type_name=commodity_type_name)
</insert>
<update id="updateCommodityType" parameterClass="cn.agriculture.web.form.CommodityTypeForm">
UPDATE commodity_type SET commodity_type_name= #commodityTypeName#,
commodity_type_note= #commodityTypeNote#
WHERE commodity_type_id = #commodityTypeId#
</update>
<select id="selectCommodityTypeName"parameterClass="cn.agriculture.web.form.CommodityTypeForm">
SELECT
commodity_type.commodity_type_name as commodityTypeName
FROM commodity_type
</select>
<delete id="delCommodityType" parameterClass="cn.agriculture.web.form.CommodityTypeForm">
DELETE FROM commodity_type
WHERE commodity_type_id = #commodityTypeId#
</delete>
</sqlMap>
CommodityTypeController.java
package cn.agriculture.web.controller;
@Slf4j
@Controller("CommodityTypeController")
@RequestMapping("/")
@PropertySource("classpath:system.properties")
public class CommodityTypeController {
@Autowired
CommodityTypeService commodityTypeService;
@Autowired
ItemListComponent itemListComponent;
@Autowired
private Environment env;
//商品类型列表初始化
@RequestMapping(value = "initCommodityType", method = RequestMethod.GET)
public String initCommodityType(Model model) {
log.info("商品类型列表初始化");
model.addAttribute("list", commodityTypeService.searchCommodityTypeList());
return "manager/commodityType/commodityTypeList";
}
@RequestMapping(value = "initAddCommodityType", method = RequestMethod.GET)
public String initAddCommodityType(Model model) {
log.info("追加商品列表初始化");
CommodityTypeForm commodityTypeForm = new CommodityTypeForm();
model.addAttribute("commodityTypeForm", commodityTypeForm);
return "manager/commodityType/addCommodityType";
}
@RequestMapping(value = "addCommodityType", method = RequestMethod.POST)
public String executeAddCommodityType(Model model, HttpSession session, @Valid @ModelAttribute("commodityTypeForm") CommodityTypeForm commodityTypeForm, BindingResult results) throws SQLException, IOException {
log.info("添加商品类型信息");
if(results.hasErrors()){
model.addAttribute("commodityTypeForm", commodityTypeForm);
return "manager/commodityType/addCommodityType";}
**************//验证用户在线,若超时让用户重新登录***************
//UVO uvo = (UVO)session.getAttribute("UVO");
//commodityTypeForm.setUpdateUser(uvo.getUserName());
*************//设置时间更新用于以时间刷新ID ????
Date date = new Date();
SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
commodityTypeForm.setUpdateTime(dateformat.format(date));
boolean result = commodityTypeService.addCommodityType(commodityTypeForm);
if(!result) {
throw new SQLException("商品类型添加失败!");
}
model.addAttribute("list", commodityTypeService.searchCommodityTypeList());
return "manager/commodityType/commodityTypeList";
}
@RequestMapping(value = "initEditCommodityType", method = RequestMethod.GET)
public String initEditCommodityType(Model model, CommodityTypeForm commodityTypeForm) {
log.info("修改商品类型初始化");
CommodityTypeForm result = commodityTypeService.searchCommodityType(commodityTypeForm);
model.addAttribute("commodityTypeForm", result);
return "manager/commodityType/editCommodityType";
}
@RequestMapping(value = "editCommodityType", method = RequestMethod.POST)
public String executeEditCommodityType(Model model,HttpSession session, @Valid @ModelAttribute("commodityTypeForm") CommodityTypeForm commodityTypeForm, BindingResult results) throws SQLException, IOException {
log.info("修改商品类型");
if(results.hasErrors()){
return "manager/commodityType/editCommodityType";}
//UVO uvo = (UVO)session.getAttribute("UVO");
//commodityTypeForm.setUpdateUser(uvo.getUserName());
Date date = new Date();
SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
commodityTypeForm.setUpdateTime(dateformat.format(date));
boolean result = commodityTypeService.selectCommodityType(commodityTypeForm);
if(!result) {
throw new SQLException("商品类型更新失败!");
}
model.addAttribute("list", commodityTypeService.searchCommodityTypeList());
return "manager/commodityType/commodityTypeList";
}
@RequestMapping(value = "delCommodityType", method = RequestMethod.GET)
public String executeDelCommodityType(Model model, CommodityTypeForm commodityTypeForm) throws SQLException {
log.info("删除商品信息");
boolean result = commodityTypeService.delCommodityType(commodityTypeForm);
if(!result) {
throw new SQLException("商品类型删除失败!");
}
model.addAttribute("list", commodityTypeService.searchCommodityTypeList());
return "manager/commodityType/commodityTypeList";
}
}
SqlMapConfig.xml (此文件主要管理所有的SqlMap文件)
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMapConfig
PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<!-- SqlMapConfig定義 -->
<sqlMapConfig>
<settings useStatementNamespaces="true" />
<typeHandler jdbcType="BLOB" javaType="[B" callback="org.springframework.orm.ibatis.support.BlobByteArrayTypeHandler" />
<sqlMap resource="CommodityTypeSqlMap.xml" />