关于下拉列表多选取值,数据库的存储读取的问题

这是一个下拉多选框

 <select name="DetectID" id="DetectID" class="selectpicker bla bla bli" data-live-search="true" multiple size="1">
                    <%
                        List<DetectItem> list = (List<DetectItem>)request.getAttribute("list");
                        if(list == null || list.size() < 1){
                            out.print("没有数据!");
                        }else{
                            for(DetectItem dit : list){
                                %>
                                    <option value="<%=dit.getId()%>"><%=dit.getItemName()%></option>
                                <%
                            }
                        }

                    %>
                </select>

这是网页显示的样子
图片说明
我想问怎么把选定的值的ID传到接收页面,我现在的写法只能获取到第一个选定值的ID,理想是把所有ID取成字符串的格式,数字用“;”隔开。存进数据库时会显示“1,;2;3”这种格式。该怎么改代码?另外还有当数据库的数据时“1;2;3”这种格式时,怎么通过关联查询查询到相关的3条数据(有两个表,一个表是存的“1;2;3”,一个表是存的数字对应的文字。两个表怎么建立关联查询,把结果存放到一个集合里。)

应该在检查项于用户关系之间再建立一张表。保留一对多的关系。

建个新表,将2个表连接在一起用

在跳转页面的时候 把选中项ID 组装起来,一起传递,数据那边要么存入的时候 建一张映射表,关联查询, 要么就1,2,3这么存, 查询的时候用LIKE
但是这样性能可能差一些