讀取mysql中的特定列值放入頁面的下拉框中

來源:互聯網
上載者:User

標籤: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中的特定列值放入頁面的下拉框中

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.