首页 > 代码库 > 读取mysql中的特定列值放入页面的下拉框中

读取mysql中的特定列值放入页面的下拉框中

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="http://www.mamicode.com/${cap.capacity}"><c:out value="http://www.mamicode.com/${cap.capacity}"></c:out></option>
        </c:forEach>
    </select>
所在楼层:
    <select name="floor" id="floor">
        <option value="">--请选择--</option>
        <c:forEach items="${floorlist}" var="floor">
        <option value="http://www.mamicode.com/${floor.floor}"><c:out value="http://www.mamicode.com/${floor.floor}"></c:out></option>
        </c:forEach>
    </select>

总结:

      数据库中capacity与floor字段的值皆有重复,使用SQL语句查询时,无法在一个语句中查出两个字段的不重复值,故分而置之,又由于使用了Spring JDBC框架,使用jt.query()方法进行查询时,需要新建两个bean类并新建对应的mapper映射,方可最终放入下拉框。

读取mysql中的特定列值放入页面的下拉框中