JSP 页面
<%@ include file="/WEB-INF/pages/include/taglibs-include.jsp"%>
pageEncoding="UTF-8"%>
<html>
<head>
<%@ include file="/WEB-INF/pages/decorators/main-head-include.jsp"%>
<title></title>
<script type="text/javascript">
</script>
</head>
<body>
<%@ include file="/WEB-INF/pages/decorators/main-body-include.jsp"%>
<div id="main">
<div id="mainWrapper">
<!-- here is the button area -->
<div class="spacer">
<hr />
</div>
<div class="searchResult">
<table id="menuTree" title="<spring:message code='ruralcreditunioninstUnit.title.summary.search.rslt'/>">
<thead>
<tr class="trStyle">
<th data-options="field:'id',width:fixWidth(0.2),halign:'center'"><spring:message code="ruralCreditUnionInstUnit.label.summary.grid.instName" /></th>
<th data-options="field:'text',width:fixWidth(0.1),halign:'center'"><spring:message code="ruralCreditUnionInstUnit.label.summary.grid.instCode" /></th>
<th data-options="field:'pid',width:fixWidth(0.1),halign:'center'"><spring:message code="ruralCreditUnionInstUnit.label.summary.grid.instType" /></th>
<th data-options="field:'state',width:fixWidth(0.1),halign:'center',align:'center'"><spring:message code="ruralCreditUnionInstUnit.label.summary.grid.agentSalesFlag"/></th>
</tr>
</thead>
</table>
</div>
<div class="spacer">
<hr />
</div>
</div>
</div>
<%@ include file="/WEB-INF/pages/instmgr/ruralcreditunioninstunit/js-ruralCreditUnionInstUnit-include.jsp" %>
<%@ include file="/WEB-INF/pages/decorators/main-foot-include.jsp"%>
</body>
</html>
<script type="text/javascript">
if ($('#menuTree').length > 0) {
$('#menuTree').treegrid({
url:"queryRuralCreditUnionInstUnitDataGrid1.do",
onBeforeExpand:function(node,data){
if (node) {
var url1 ="<c:url value='/operation/instmgr/queryRuralCreditUnionInstUnitDataGrid1.do'/>?pid=" + node.id;
$('#menuTree').treegrid('options').url = url1;
}
},
idField:'id',
treeField:'id',
animate:true,
lines:true,
rownumbers:true,
showHeader:true,
height:'auto',
width:'auto',
autoRowHeight:true,
autoRowWidth:true,
fitColumns:true,
loadMsg: '<spring:message code="pagination.label.loadMsg" />',
onLoadSuccess: function(data){
$('#menuTree').treegrid('collapseAll');
}
});
}
function fixWidth(percent)
{
return document.body.clientWidth * percent ;
}
</script>
java代码
@RequestMapping("/queryRuralCreditUnionInstUnitDataGrid1")
@ResponseBody
public String ajaxGetModuleJson(String pid)
{
return getModuleJsonData(pid);
}
public String getModuleJsonData(String pid)
{
StringBuffer jsonBuffer = new StringBuffer();
TMenuExample tMenuExample = new TMenuExample();
TMenuExample.Criteria criteria = tMenuExample.createCriteria();
if (StringUtils.isEmpty(pid))
{
criteria.andPidIsNull();
}
else
{
criteria.andPidEqualTo(pid);
}
// 获取根节点
List<TMenu> rootModuleList = tMenuMapper.selectByExample(tMenuExample);
jsonBuffer.append("[");
for (int i = 0; i < rootModuleList.size(); i++)
{
// 获取字节点(菜单&按钮)
getChiledrenMdlList(rootModuleList.get(i), jsonBuffer, i > 0);
}
jsonBuffer.append("]");
return jsonBuffer.toString();
}
private void getChiledrenMdlList(TMenu parentModule, StringBuffer jsonBuffer, boolean isNotFirst)
{
if (isNotFirst)
{
jsonBuffer.append(",");
}
jsonBuffer.append("{");
String entityId = parentModule.getId();
TMenuExample example = new TMenuExample();
TMenuExample.Criteria criteria = example.createCriteria();
criteria.andPidEqualTo(entityId);
List<TMenu> moduleList = tMenuMapper.selectByExample(example);
jsonBuffer.append("\"id\":\"").append(entityId).append("\",");
String pid = parentModule.getPid();
Boolean hasChildren = moduleList.size() > 0;
jsonBuffer.append("\"pid\":\"").append(pid != null ? pid : "-1").append("\",");
jsonBuffer.append("\"hasChildren\":\"").append(hasChildren).append("\",");
jsonBuffer.append("\"state\":\"").append(parentModule.getState()).append("\",");
jsonBuffer.append("\"text\": \"").append(EncodeHelper.encodeHtml(parentModule.getText())).append("\"");
// if (hasChildren)
// {
//
// jsonBuffer.append("\"children\":[");
// for (int i = 0; i < moduleList.size(); i++)
// {
// this.getChiledrenMdlList(moduleList.get(i), jsonBuffer, i > 0);
// }
// jsonBuffer.append("]");
//
// }
// else
// {
//
// jsonBuffer.append("\"children\":[]");
// }
jsonBuffer.append("}");
}
数据库相关代码:
TMenu
import java.util.List;
import cn.com.gevent.bfip.entity.Entity;
public class TMenu extends Entity
{
private String id;
private String pid;
private String text;
private String iconcls;
private String url;
private String state;
private List<TMenu> children;
public String getId()
{
return id;
}
public void setId(String id)
{
this.id = id == null ? null : id.trim();
}
public String getPid()
{
return pid;
}
public void setPid(String pid)
{
this.pid = pid == null ? null : pid.trim();
}
public String getText()
{
return text;
}
public void setText(String text)
{
this.text = text == null ? null : text.trim();
}
public String getIconcls()
{
return iconcls;
}
public void setIconcls(String iconcls)
{
this.iconcls = iconcls == null ? null : iconcls.trim();
}
public String getUrl()
{
return url;
}
public void setUrl(String url)
{
this.url = url == null ? null : url.trim();
}
public List<TMenu> getChildren()
{
return children;
}
public void setChildren(List<TMenu> children)
{
this.children = children;
}
public String getState()
{
return state;
}
public void setState(String state)
{
this.state = state;
}
}
SQL文
<?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="cn.com.gevent.bfip.dataaccess.dao.mapper.syscfg.TMenuMapper" >
<resultMap id="BaseResultMap" type="cn.com.gevent.bfip.entity.model.syscfg.TMenu" >
<result column="id" property="id" jdbcType="VARCHAR" />
<result column="pid" property="pid" jdbcType="VARCHAR" />
<result column="text" property="text" jdbcType="VARCHAR" />
<result column="iconCls" property="iconcls" jdbcType="VARCHAR" />
<result column="url" property="url" jdbcType="VARCHAR" />
<result column="state" property="state" jdbcType="VARCHAR" />
</resultMap>
<sql id="Example_Where_Clause" >
<where >
<foreach collection="oredCriteria" item="criteria" separator="or" >
<if test="criteria.valid" >
<trim prefix="(" suffix=")" prefixOverrides="and" >
<foreach collection="criteria.criteria" item="criterion" >
<choose >
<when test="criterion.noValue" >
and ${criterion.condition}
</when>
<when test="criterion.singleValue" >
and ${criterion.condition} #{criterion.value}
</when>
<when test="criterion.betweenValue" >
and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
</when>
<when test="criterion.listValue" >
and ${criterion.condition}
<foreach collection="criterion.value" item="listItem" open="(" close=")" separator="," >
#{listItem}
</foreach>
</when>
</choose>
</foreach>
</trim>
</if>
</foreach>
<if test="oredCriteria == null or oredCriteria.size() == 0" >
<![CDATA[ FLAG_DELETED <> 'Y' ]]>
</if>
<if test="oredCriteria != null and oredCriteria.size() > 0" >
<![CDATA[ AND FLAG_DELETED <> 'Y' ]]>
</if>
</where>
</sql>
<sql id="Update_By_Example_Where_Clause" >
<where >
<foreach collection="example.oredCriteria" item="criteria" separator="or" >
<if test="criteria.valid" >
<trim prefix="(" suffix=")" prefixOverrides="and" >
<foreach collection="criteria.criteria" item="criterion" >
<choose >
<when test="criterion.noValue" >
and ${criterion.condition}
</when>
<when test="criterion.singleValue" >
and ${criterion.condition} #{criterion.value}
</when>
<when test="criterion.betweenValue" >
and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
</when>
<when test="criterion.listValue" >
and ${criterion.condition}
<foreach collection="criterion.value" item="listItem" open="(" close=")" separator="," >
#{listItem}
</foreach>
</when>
</choose>
</foreach>
</trim>
</if>
</foreach>
<if test="example == null or example.oredCriteria == null or example.oredCriteria.size() == 0" >
<![CDATA[ FLAG_DELETED <> 'Y' ]]>
</if>
<if test="example != null and example.oredCriteria != null and example.oredCriteria.size() > 0" >
<![CDATA[ AND FLAG_DELETED <> 'Y' ]]>
</if>
</where>
</sql>
<sql id="Base_Column_List" >
id, pid, text, iconCls, url,state
</sql>
<select id="selectByExample" resultMap="BaseResultMap" parameterType="cn.com.gevent.bfip.entity.model.syscfg.TMenuExample" >
select
<if test="distinct" >
distinct
</if>
<include refid="Base_Column_List" />
from t_menu
<if test="_parameter != null" >
<include refid="Example_Where_Clause" />
</if>
<if test="orderByClause != null" >
order by ${orderByClause}
</if>
<if test="endRecordNum > 0" >
limit ${startRecordNum},${numberOfRecordsToSelect}
</if>
</select>
<delete id="deleteByExample" parameterType="cn.com.gevent.bfip.entity.model.syscfg.TMenuExample" >
delete from t_menu
<if test="_parameter != null" >
<include refid="Example_Where_Clause" />
</if>
</delete>
<insert id="insert" parameterType="cn.com.gevent.bfip.entity.model.syscfg.TMenu" >
insert into t_menu (id, pid, text,
iconCls, url)
values (#{id,jdbcType=VARCHAR}, #{pid,jdbcType=VARCHAR}, #{text,jdbcType=VARCHAR},
#{iconcls,jdbcType=VARCHAR}, #{url,jdbcType=VARCHAR})
</insert>
<insert id="insertSelective" parameterType="cn.com.gevent.bfip.entity.model.syscfg.TMenu" >
insert into t_menu
<trim prefix="(" suffix=")" suffixOverrides="," >
<if test="id != null" >
id,
</if>
<if test="pid != null" >
pid,
</if>
<if test="text != null" >
text,
</if>
<if test="iconcls != null" >
iconCls,
</if>
<if test="url != null" >
url,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides="," >
<if test="id != null" >
#{id,jdbcType=VARCHAR},
</if>
<if test="pid != null" >
#{pid,jdbcType=VARCHAR},
</if>
<if test="text != null" >
#{text,jdbcType=VARCHAR},
</if>
<if test="iconcls != null" >
#{iconcls,jdbcType=VARCHAR},
</if>
<if test="url != null" >
#{url,jdbcType=VARCHAR},
</if>
</trim>
</insert>
<select id="countByExample" parameterType="cn.com.gevent.bfip.entity.model.syscfg.TMenuExample" resultType="java.lang.Integer" >
select count(*) from t_menu
<if test="_parameter != null" >
<include refid="Example_Where_Clause" />
</if>
</select>
<update id="updateByExampleSelective" parameterType="map" >
update t_menu
<set >
<if test="record.id != null" >
id = #{record.id,jdbcType=VARCHAR},
</if>
<if test="record.pid != null" >
pid = #{record.pid,jdbcType=VARCHAR},
</if>
<if test="record.text != null" >
text = #{record.text,jdbcType=VARCHAR},
</if>
<if test="record.iconcls != null" >
iconCls = #{record.iconcls,jdbcType=VARCHAR},
</if>
<if test="record.url != null" >
url = #{record.url,jdbcType=VARCHAR},
</if>
</set>
<if test="_parameter != null" >
<include refid="Update_By_Example_Where_Clause" />
</if>
</update>
<update id="updateByExample" parameterType="map" >
update t_menu
set id = #{record.id,jdbcType=VARCHAR},
pid = #{record.pid,jdbcType=VARCHAR},
text = #{record.text,jdbcType=VARCHAR},
iconCls = #{record.iconcls,jdbcType=VARCHAR},
url = #{record.url,jdbcType=VARCHAR}
<if test="_parameter != null" >
<include refid="Update_By_Example_Where_Clause" />
</if>
</update>
</mapper>