ztree與springmvc+spring+mybatis整合實現增刪改查
在springmvc+spring+mybatis裡整合ztree實現增刪改查,上一篇已經寫了demo,下面就只貼出各層實現功能的程式碼:
Jsp頁面實現功能的js程式碼如下:
-
<script>
-
//用於捕獲分類編輯按鈕的 click 事件,並且根據返回值確定是否允許進入名稱編輯狀態
-
function beforeEditName(treeId, treeNode) {
-
var zTree = $.fn.zTree.getZTreeObj("treeDemo");
-
zTree.selectNode(treeNode);
-
return true;
-
}
-
//移除分類前執行
-
function beforeRemove(treeId, treeNode) {
-
var zTree = $.fn.zTree.getZTreeObj("treeDemo");
-
zTree.selectNode(treeNode);
-
var confirmFlag = confirm("確認刪除分類[ " + treeNode.name + " ]嗎?" )
-
var confirmVal = false;
-
if(confirmFlag){
-
var data = {id:treeNode.id};
-
$.ajax({
-
async: false,
-
type: "post",
-
data:data,
-
url: "<%=request.getContextPath() %>/library/deleteLibrary/ ",
-
success: function(json){
-
if(json == "success" ){
-
confirmVal = true;
-
} else{
-
alert('親,刪除失敗!');
-
}
-
},
-
error: function(){
-
alert('親,刪除失敗!');
-
}
-
});
-
}
-
return confirmVal;
-
}
-
//執行刪除操作後提示
-
function onRemove(e, treeId, treeNode) {
-
alert('親,刪除成功!');
-
}
-
//用於捕獲分類編輯名稱結束(Input 失去焦點 或 按下 Enter 鍵)之後,更新分類名稱資料之前的事件回撥函式
-
function beforeRename(treeId, treeNode, newName) {
-
if (newName.length == 0 || newName.indexOf("請輸入名稱")>=0) {
-
alert('親,請輸入分類名稱!');
-
var zTree = $.fn.zTree.getZTreeObj("treeDemo");
-
setTimeout( function(){zTree.editName(treeNode)}, 10);
-
return false;
-
}
-
if(newName.length > 15){
-
alert('親,分類名稱過長!');
-
var zTree = $.fn.zTree.getZTreeObj("treeDemo");
-
setTimeout( function(){zTree.editName(treeNode)}, 10);
-
return false;
-
}
-
native_name = treeNode.name;
-
return true;
-
}
-
//執行編輯操作
-
function onRename(e, treeId, treeNode) {
-
if(native_name == treeNode.name){
-
return;
-
}
-
var data = {id:treeNode.id,level_id:treeNode.level,pid:treeNode.pId,name:treeNode.name};
-
$.ajax({
-
async: false,
-
type: "post",
-
data:data,
-
url: "<%=request.getContextPath() %>/library/updateLibraryName/ ",
-
success : function(json){
-
if(json == "success" ){
-
alert('操作成功!');
-
} else{
-
alert('親,操作失敗,請稍後再試!');
-
}
-
},
-
error : function() {
-
alert('親,網路有點不給力呀!');
-
}
-
});
-
}
-
//新增子分類
-
function addHoverDom(treeId, treeNode) {
-
var sObj = $("#" + treeNode.tId + "_span");
-
if (treeNode.editNameFlag || $("#addBtn_" +treeNode.tId).length>0 || treeNode.level == 3) return;
-
var addStr = "<span class='button add' id='addBtn_" + treeNode.tId + "' title='新增分類' onfocus='this.blur();'></span>";
-
sObj.after(addStr);
-
var btn = $("#addBtn_" +treeNode.tId);
-
if (btn) btn.bind("click" , function(){
-
var zTree = $.fn.zTree.getZTreeObj("treeDemo");
-
var treeNodes;
-
$.ajax({
-
async: false,
-
type: "post",
-
url: "<%=request.getContextPath() %>/library/saveLibrary/ ",
-
success : function(libraryId){
-
if(libraryId != "" ){
-
treeNodes = zTree.addNodes(treeNode, {id:(libraryId), pId:treeNode.id, name:"請輸入名稱" });
-
}
-
if (treeNodes) {
-
zTree.editName(treeNodes[0]);
-
}
-
},
-
error : function(){
-
alert('親,網路有點不給力呀!');
-
}
-
});
-
return false;
-
});
-
}
-
//父級分類去除刪除功能
-
function setRemoveBtn(treeId, treeNode) {
-
return !treeNode.isParent;
-
}
-
//滑鼠移開按鈕消失
-
function removeHoverDom(treeId, treeNode) {
-
$( "#addBtn_"+treeNode.tId).unbind().remove();
-
};
-
//新增按鈕點選事件
-
function addClick(){
-
$( "#addParent").bind("click" , {isParent:true}, add);
-
}
-
//移除分類
-
function remove(e) {
-
var zTree = $.fn.zTree.getZTreeObj("treeDemo"),
-
nodes = zTree.getSelectedNodes(),
-
treeNode = nodes[0];
-
if (nodes.length == 0) {
-
alert( "親,請先選擇一個分類!" );
-
return;
-
}
-
var callbackFlag = $("#callbackTrigger" ).attr("checked");
-
zTree.removeNode(treeNode, callbackFlag);
-
};
-
//展開全部分類
-
function expandAllFlag(){
-
zTree_Menu.expandAll( true);
-
}
-
//合併全部分類
-
function combineAllFlag(){
-
zTree_Menu.expandAll( false);
-
}
-
//載入ztree
-
function onloadZTree(){
-
var ztreeNodes;
-
$.ajax( {
-
async : true, //是否非同步
-
cache : false, //是否使用快取
-
type : 'post', //請求方式,post
-
dataType : "json", //資料傳輸格式
-
url : "<%=request.getContextPath() %>/library/findAllLibrary/ ", //請求連結
-
error : function() {
-
alert('親,網路有點不給力呀!');
-
},
-
success : function(data) {
-
ztreeNodes = eval( "["+data+"]" ); //將string型別轉換成json物件
-
$.fn.zTree.init($( "#treeDemo"), setting, ztreeNodes);
-
zTree_Menu = $.fn.zTree.getZTreeObj("treeDemo" );
-
$( "#selectAll").bind("click" , selectAll);
-
expandAllFlag();
-
addClick();
-
}
-
});
-
}
-
//初始化操作
-
$(document).ready( function(){
-
onloadZTree();
-
});
-
</script>
備註:後臺傳過來的json資料一定執行這個操作:eval( "["+data+"]" ) 將string轉換為物件
Controller層程式碼如下:
-
import java.util.List;
-
import javax.servlet.http.HttpServletRequest;
-
import javax.servlet.http.HttpServletResponse;
-
import org.springframework.beans.factory.annotation.Autowired;
-
import org.springframework.stereotype.Controller;
-
import org.springframework.web.bind.annotation.RequestMapping;
-
import org.springframework.web.bind.annotation.RequestParam;
-
import org.springframework.web.bind.annotation.ResponseBody;
-
@Controller
-
@RequestMapping(value="library/")
-
public class LibraryController {
-
@Autowired
-
public LibraryService libraryService;
-
/**
-
* 跳轉到分類頁面
-
* @return
-
*/
-
@RequestMapping(value="toListLibrary/")
-
public String toListLibrary(){
-
return "library/listLibrary";
-
}
-
/**
-
* 查詢所有分類資訊
-
* @return
-
*/
-
@RequestMapping(value="findAllLibrary/")
-
@ResponseBody
-
public List<Object> findAllLibrary(HttpServletRequest request, HttpServletResponse response){
-
return libraryService.findAllLibrary();
-
}
-
/**
-
* 儲存分類
-
* @return
-
*/
-
@RequestMapping(value="saveLibrary/")
-
@ResponseBody
-
public String saveLibrary(HttpServletRequest request, HttpServletResponse response){
-
String libraryId = UUIDUtil.randomUUID();
-
return libraryId;
-
}
-
/**
-
* 更新分類名稱
-
* @return
-
*/
-
@RequestMapping(value="updateLibraryName/")
-
@ResponseBody
-
public String updateLibraryName(HttpServletRequest request, HttpServletResponse response, Library library) {
-
String createname=(String) request.getSession().getAttribute(Constants.CURRENT_USER_NAME);
-
library.setCreate_user(createname);
-
library.setUpdate_user(createname);
-
return libraryService.addOrUpdateLibrary(library);
-
}
-
/**
-
* 刪除分類
-
* @return
-
*/
-
@RequestMapping(value="deleteLibrary/")
-
@ResponseBody
-
public String deleteLibrary(HttpServletRequest request, HttpServletResponse response,@RequestParam(value = "id") String id) {
-
return libraryService.deleteLibrary(id);
-
}
-
}
service層程式碼如下:
-
import java.util.ArrayList;
-
import java.util.Date;
-
import java.util.HashMap;
-
import java.util.List;
-
import java.util.Map;
-
import org.apache.commons.lang3.StringUtils;
-
import org.apache.commons.logging.Log;
-
import org.apache.commons.logging.LogFactory;
-
import org.springframework.beans.factory.annotation.Autowired;
-
import org.springframework.stereotype.Service;
-
@Service
-
public class LibraryService {
-
protected final static Log log = LogFactory.getLog(LibraryService.class);
-
@Autowired
-
private LibraryMapper libraryMapper;
-
/**
-
* 查詢所有分類資訊
-
* @return
-
*/
-
public List<Object> findAllLibrary(){
-
List<Object> listZTree = new ArrayList<Object>();
-
List<Library> listLibrary = libraryMapper.findAllLibrary();
-
String str = "";
-
for (int i = 0; i < listLibrary.size(); i++) {
-
Library library = listLibrary.get(i);//分類資訊
-
str = "{id:'" +library.getId() + "', pId:'"+library.getPid()+"', name:\""+library.getName()+"\" }";//封裝ztree需要格式的字串
-
log.info(str);
-
listZTree.add(str);
-
}
-
return listZTree;
-
}
-
/**
-
* 儲存或更新分類資訊
-
* @param library
-
* @return
-
*/
-
public String addOrUpdateLibrary(Library library){
-
int numFlag = 0;
-
//根據id查詢分類資訊
-
if (StringUtils.isBlank(library.getId())) {
-
return "error";
-
}
-
int num = libraryMapper.findLibraryById(library.getId());
-
if (num >0) {//更新資訊
-
library.setUpdate_time(new Date());
-
library.setCreate_user(null);
-
library.setPid(null);
-
numFlag = libraryMapper.updateByPrimaryKeySelective(library);
-
}else{//插入資訊
-
if(library.getPid().equals("null")){
-
library.setPid("0");
-
}
-
int orderId = libraryMapper.findLastLibrary(library);
-
orderId++;
-
library.setCreate_time(new Date());
-
library.setUpdate_time(new Date());
-
library.setOrder_id(orderId);
-
numFlag = libraryMapper.insert(library);
-
}
-
return "success";
-
}
-
/**
-
* 刪除分類
-
* @param id
-
* @return
-
*/
-
public String deleteLibrary(String id){
-
int num = libraryMapper.deleteByPrimaryKey(id);
-
return "success";
-
}
-
}
備註:執行完資料操作需要判斷返回值,這裡我直接返回success活error了。
Mapper層程式碼如下
-
import java.util.List;
-
import java.util.Map;
-
public interface LibraryMapper extends BaseMapper<Library,String>{
-
/**
-
* 查詢所有分類資訊
-
* @return
-
*/
-
public List<Library> findAllLibrary();
-
/**
-
* 根據id查詢條數
-
* @param id
-
* @return
-
*/
-
public int findLibraryById(String id);
-
/**
-
* 查詢最大排序號
-
* @return
-
*/
-
public int findLastLibrary(Library library);
-
}
備註:BaseMapper裡有幾個公用的增刪改查的方法,Library是資料庫表對應的實體,都很簡單,避免程式碼過多這裡就省略了
-
<?xml version="1.0" encoding= "UTF-8" ?>
-
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
-
<mapper namespace= "LibraryMapper" >
-
< resultMap id= "BaseResultMap" type= "Library" >
-
<id column ="id" property="id" jdbcType= "VARCHAR" />
-
<result column ="pid" property="pid" jdbcType= "VARCHAR" />
-
<result column ="name" property="name" jdbcType= "VARCHAR" />
-
<result column ="create_time" property="create_time" jdbcType= "TIMESTAMP" />
-
<result column ="update_time" property="update_time" jdbcType= "TIMESTAMP" />
-
<result column ="is_delete" property="is_delete" jdbcType= "INTEGER" />
-
<result column ="update_user" property="update_user" jdbcType= "VARCHAR" />
-
<result column ="create_user" property="create_user" jdbcType= "VARCHAR" />
-
<result column ="level_id" property="level_id" jdbcType= "INTEGER" />
-
<result column ="order_id" property="order_id" jdbcType= "INTEGER" />
-
</ resultMap>
-
< sql id= "Base_Column_List" >
-
id, pid , name, create_time, update_time, is_delete, update_user, create_user, level_id,
-
order_id
-
</ sql>
-
<!-- 根據id查詢分類資訊是否存在 -->
-
< select id= "findLibraryById" parameterType ="java.lang.String" resultType= "java.lang.Integer" >
-
select count(*) from onair_vms_library
-
where is_delete=1 and id = #{id,jdbcType=VARCHAR}
-
</ select>
-
<!-- 根據 pid查詢最大排序號 -->
-
< select id= "findLastLibrary" resultType ="java.lang.Integer" parameterType="Library" >
-
SELECT MAX(order_id) as order_id FROM onair_vms_library
-
where pid = #{pid,jdbcType=VARCHAR}
-
</ select>
-
<!-- 查詢所有分類資訊 -->
-
< select id= "findAllLibrary" resultMap ="BaseResultMap">
-
select
-
<include refid ="Base_Column_List"/>
-
from onair_vms_library
-
where is_delete = 1 order by order_id
-
</ select>
-
< select id= "selectByPrimaryKey" resultMap ="BaseResultMap" parameterType="java.lang.String" >
-
select
-
<include refid ="Base_Column_List" />
-
from onair_vms_library
-
where id = #{id,jdbcType=VARCHAR}
-
</ select>
-
< delete id= "deleteByPrimaryKey" parameterType="java.lang.String" >
-
update onair_vms_library set is_delete = 0
-
where id = #{id,jdbcType=VARCHAR}
-
</ delete>
-
< insert id= "insert" parameterType="Library" >
-
insert into onair_vms_library (id, pid, name,
-
create_time, update_time, is_delete,
-
update_user, create_user, level_id,
-
order_id)
-
values (#{id,jdbcType=VARCHAR}, #{pid,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR},
-
#{create_time,jdbcType=TIMESTAMP}, #{update_time,jdbcType=TIMESTAMP}, #{is_delete,jdbcType=INTEGER},
-
#{update_user,jdbcType=VARCHAR}, #{create_user,jdbcType=VARCHAR}, #{level_id,jdbcType=INTEGER},
-
#{order_id,jdbcType=INTEGER})
-
</ insert>
-
< update id= "updateByPrimaryKey" parameterType="Library" >
-
update onair_vms_library
-
set pid = #{pid,jdbcType=VARCHAR},
-
name = #{name,jdbcType=VARCHAR},
-
create_time = #{create_time,jdbcType=TIMESTAMP},
-
update_time = #{update_time,jdbcType=TIMESTAMP},
-
is_delete = #{is_delete,jdbcType=INTEGER},
-
update_user = #{update_user,jdbcType=VARCHAR},
-
create_user = #{create_user,jdbcType=VARCHAR},
-
level_id = #{level_id,jdbcType=INTEGER},
-
order_id = #{order_id,jdbcType=INTEGER}
-
where id = #{id,jdbcType=VARCHAR}
-
</ update>
-
</mapper>
備註:mapper對應的xml
與jsp對應的VO層程式碼如下:
-
public class LibraryVo {
-
/* id */
-
private String id;
-
/* 目標id */
-
private String targetId;
-
/* pid */
-
private String pId;
-
/* 目標pid */
-
private String targetPId;
-
/* "inner":成為子節點,"prev":成為同級前一個節點,"next":成為同級後一個節點 */
-
private String moveType;
-
public String getId() {
-
return id;
-
}
-
public void setId(String id) {
-
this. id = id;
-
}
-
public String getTargetId() {
-
return targetId;
-
}
-
public void setTargetId(String targetId) {
-
this. targetId = targetId;
-
}
-
public String getpId() {
-
return pId;
-
}
-
public void setpId(String pId) {
-
this. pId = pId;
-
}
-
public String getTargetPId() {
-
return targetPId;
-
}
-
public void setTargetPId(String targetPId) {
-
this. targetPId = targetPId;
-
}
-
public String getMoveType() {
-
return moveType;
-
}
-
public void setMoveType(String moveType) {
-
this. moveType = moveType;
-
}
-
}
上面的程式碼實現了基本的增刪改查,有哪些地方有問題歡迎指正,也歡迎交流,每一次的進步都離不開大家的幫助
--------------------- 本文來自 黃愛崗 的CSDN 部落格 ,全文地址請點選:https://blog.csdn.net/huangaigang6688/article/details/27376831?utm_source=copy