標籤:imp for template app 語句 ems etc bsp 2.3
1.使用的技術:JSP,Spring JDBC(Mapper)
2.代碼
2.1 介面
public interface IMeetingRoomDao { public List<Mrcap> selectCap(); public List<Mrfloor> selectFloor();}
2.2 實作類別
@Override public List<Mrcap> selectCap() { List<Mrcap> caplist = new ArrayList<Mrcap>(); //sql語句中不能在一個語句中查兩個欄位的distinct值,查一個欄位,需要單獨建立該欄位的mapper String sql = "select distinct capacity from meetingroom"; caplist = jt.query(sql,new CapMapper()); return caplist; } @Override public List<Mrfloor> selectFloor() { List<Mrfloor> floorlist = new ArrayList<Mrfloor>(); String sql = "select distinct floor from meetingroom"; floorlist = jt.query(sql,new FloorMapper()); return floorlist; }
註:範型中的Mrcap與Mrfloor為單獨建立的bean類,類中只有一個私人屬性(cap/floor),因此在使用spring JDBC時需要建立對應的Mapper。
2.3 CapMapper
public class CapMapper implements RowMapper<Mrcap>{ @Override public Mrcap mapRow(ResultSet rs, int rownum) throws SQLException { Mrcap mrc = new Mrcap(); mrc.setCapacity(rs.getInt("capacity")); return mrc; }}
2.4 FloorMapper同CapMapper,不予代碼展示
2.5 因為實作類別的存在,必須向Spring的設定檔中加入<bean></bean>標籤
<bean id="MeetingRoomDao" class="com.dao.MeetingRoomDao"> <property name="dataSource" ref="datasource" /></bean>
其中MeetingRoomDao中要有如下代碼用來映射datasource:
private DataSource datasource; private JdbcTemplate jt; public void setDataSource(DataSource ds){ this.datasource = ds; this.jt = new JdbcTemplate(datasource); }
至此,下拉框要填充的內容讀取完畢,並分別放入caplist與floorlist中等待放入下拉框,放入下拉框時使用EL運算式>>>
容量: <select name="capacity" id="capacity"> <option value="">--請選擇--</option> <c:forEach items="${caplist}" var="cap"> <option value="${cap.capacity}"><c:out value="${cap.capacity}"></c:out></option> </c:forEach> </select>所在樓層: <select name="floor" id="floor"> <option value="">--請選擇--</option> <c:forEach items="${floorlist}" var="floor"> <option value="${floor.floor}"><c:out value="${floor.floor}"></c:out></option> </c:forEach> </select>
總結:
資料庫中capacity與floor欄位的值皆有重複,使用SQL語句查詢時,無法在一個語句中查出兩個欄位的不重複值,故分而置之,又由於使用了Spring JDBC架構,使用jt.query()方法進行查詢時,需要建立兩個bean類並建立對應的mapper映射,方可最終放入下拉框。
讀取mysql中的特定列值放入頁面的下拉框中