首页 > 技术文章 > xml 连表查询(2) -->>自关联! 查询父类name,显示父类下的所有子类

douder 2017-07-07 10:29 原文

from T_DICTIONARY t   left outer join  T_DICTIONARY d  on  t.p_id = d.ID (t为子表,d为父表)

页面添加 input 

父类名称:<input id="pDName" name="pName" type="text" placeholder="字典名称" class="form-control input-medium input-inline" autocomplete="off">

 

js 获取参数 可以获取多个参数 传到后台

//查询

function loadData(){
var sdName = $("#sdName").val();
var pDName = $("#pDName").val();
$("#pageContent_div").load(root + "/dictionary/list.htm", {"pageNo" : $("#pageNo").val(), "pageSize" : $("#pageSize").val(), "dName" : sdName,"pName" : pDName},function(){
$("#sdName").val(sdName);
$("#pDName").val(pDName);
});
}

后台通过request获取参数pDName 放入集合

xml获取参数 d.D_NAME父类名字根据pName模糊查询

连表查询,查询条件:t.p_id = d.id (根据父表name查询出所有父类是它的子表数据)-->根据连接条件查询出想要的数据

<if test="pName != null and pName != ''">
and d.D_NAME like'%'||#{pName}||'%'
</if>

因为model没有父类名称字段,只有name字段 所以可以添加pName字段,添加get set方法

同时让页面显示父name: <td>$!{l.pName}</td>

 注:<option value="$l.id">$l.dName</option> 此value的意思是:存入数据库的父类名称是id 显示的是名字

  连表查询,有父类名字显示父类的名字,option下拉选 通过controller的listType方法

<option value="0">---请选择---</option>#foreach($l in ${list}) 如果没有父类,存入库的p_id就是0 
<option value="$l.id">$l.dName</option>#end  如果添加的数据有父类,则获取显示name ,添加到库的是它的id

推荐阅读