首先我的表是一个树形结构。每条记录只有3
个属性,有自己独特的
ID
,然后也有自己的上级
ID
(
parent_id'
),然后就是自己的
name
。具体结构表中数据图:
新建一个实体,由于我做的是一个有关汽车轮胎的关联选择。新建Car.java
。
Car.java
public class Car implements Serializable {
/**
*
*/
private static final long serialVersionUID = -3292379249326160585L;
private int id;
private String name;
private int parent_id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getParent_id() {
return parent_id;
}
public void setParent_id(int parent_id) {
this.parent_id = parent_id;
}
}
public class CarImpl {
public static List<Car> listCar(int id) {
SqlSession session=Util.getSqlSessionFactory().openSession();
List<Car> la=null;
try{
la=session.selectList("com.ctq.entity.CarMapper.listCar", id);
}catch(Exception e){
e.printStackTrace();
}finally{
session.close();
}
return la;
}
}
这里需要一个导入
sqlsessionFactory的
util
类。
Util.java
public class Util {
private static SqlSessionFactory sqlSessionFactory = null;
static{
String resource = "configuration.xml";
Reader reader = null;
try {
reader = Resources.getResourceAsReader(resource);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
}
public static SqlSessionFactory getSqlSessionFactory(){
return sqlSessionFactory;
}
}
然后需要在Car.xml
中配置相应的
select
。
<mapper namespace="com.ctq.entity.CarMapper">
<select id="listCar" parameterType="int" resultType="com.ctq.entity.Car">
SELECT * FROM car WHERE parent_id=#{id}
</select>
</mapper>
$(document).ready(function() {
getCarBrand();
});
//取所有车牌
function getCarBrand() {
var url = "getCarJSON!listCar.action?carId=0";
$.getJSON(url, function(data) {
setCarBrand(data);
});
}
//设置车牌
function setCarBrand(data) {
var carBrand = document.getElementById("toCarBrand");
$("#message").html("");
$.each(data.lc, function(i, area) {
var value = area.id;
var text = area.name;
$("#message")
.append("<div>value=" + value + ",text=" + text + "</div>");
var option = new Option(text, value);
carBrand.options.add(option);
});
}
//按上级ID取相应的型号
function getCar(name) {
if (name == 'type') {
clearSel(document.getElementById("toCarType")); //清空车牌
var carBrand = document.getElementById("toCarBrand");
if (carBrand.options[carBrand.selectedIndex].value == "")
return;
var carId = carBrand.options[carBrand.selectedIndex].value;
$("#message").html("");
$("#message").append("<div>carId=" + carId + "</div>");
var url = "getCarJSON!listCar.action?carId=" + carId + "";
$.getJSON(url, function(data) {
setCarType(data);
});
} else if (name == 'num') {
clearSel(document.getElementById("toCarNum")); //清空型号
var carNum = document.getElementById("toCarType");
if (carNum.options[carNum.selectedIndex].value == "")
return;
var carId = carNum.options[carNum.selectedIndex].value;
$("#message").html("");
$("#message").append("<div>carId=" + carId + "</div>");
var url = "getCarJSON!listCar.action?carId=" + carId + "";
$.getJSON(url, function(data) {
setCarNum(data);
});
}
}
//当改变车牌时设置对应系列
function setCarType(data) {
var carType = document.getElementById("toCarType");
var value1=null;
var text1="请选择对应的车系";
var option1=new Option(text1,value1);
carType.options.add(option1);
$.each(data.lc, function(i, area) {
var value = area.id;
var text = area.name;
var option = new Option(text, value);
carType.options.add(option);
});
}
//当改变型号时设置对应的具体型号
function setCarNum(data) {
var carNum = document.getElementById("toCarNum");
var value1=null;
var text1="请选择对应的型号";
var option1=new Option(text1,value1);
carNum.options.add(option1);
$.each(data.lc, function(i, area) {
var value = area.id;
var text = area.name;
var option = new Option(text, value);
carNum.options.add(option);
});
}
//设置具体的某一个
function setTheOne(data){
$("#message").html("");
var theOne=document.getElementById("toCarNum");
var value=theOne.value;
$("#message").append("<div>value=" + value + "</div>");
}
// 清空下拉列表
function clearSel(oSelect) {
while (oSelect.childNodes.length > 0) {
oSelect.removeChild(oSelect.childNodes[0]);
}
}
这里需要掌握相应的jquery
操作,
jquery
可以方便的实现一些增加
html
标签的功能。