图可以包含的寓意和含义是文字不能比拟的,先有一个效果图你也就知道这篇文章的主要内容是关于什么问题的,省去了一大堆文字的累述,看下面这张图:

这个需求就是要实现某个人具有另外一种特性,具有多对多关系,比如某个人既喜欢运动、有喜欢上网等等,这样类似的需求在几乎在每个系统里面都有设计,而且很多框架都实现了这样的功能,如果让自己去实现就需要自己从建立表、逻辑、以及界面JS都需要自己手动去写,下面是说下我的设计思路。

设计思路

将多个checkbox放到一个div元素中,利用jquery的函数进div和checkbox进行控制选取,取值和赋值可以写一个循环既可以完成,至于表单提交既可以利用form标签调教,也可以利用jquery的ajax方式提交,在对用户体验度要求高的系统中最好使用ajax方式提交,这是界面的设计部门,另外还有数据库表的建立,我在做数据库表时觉得很简单但也遇到了一些问题。

数据库需要建立一张关系表来存储多对多关系,大家都知道到,需要注意的是在这张关系表里面怎么存储,即多个复选框的ID是存储在一个字段里面还是一个ID一条记录呢,这两种方式都可以实现;如果存储在一个字段里面就需要把处理这个字段的逻辑写在java类里面,我在做表单时从表单界面直接到数据库SQL语句,中间逻辑已经封装不可以修改,因此只能把IDS存在一个字段里面,感觉这种方式实现也挺快,减少了逻辑。

如下有两张表fcs_checkitem、fcs_useritem,fcs_useritem为关系表它的itemids字段保存了fcs_checkitem表的itemid数组,想利用下面嵌套语句查询:

SELECT * FROM fcs_checkitem

WHERE itemid IN

(

SELECT itemids FROM fcs_useritem

WHERE userid='00000075'

)

经测试这样写并不能查询出结果,因为里面嵌套的查询返回的结果是一个逗号隔开的字符串数据(001,002,,003),如果手动写一个这样的数据是可以查询出来的,但是这样动态的方式是查不出来的,上网查发现mysql是不支持这样动态查询的,发现有另一种思路实现这种关键字 “IN” 的功能。

SELECT group_concat(b.itemname) as itemnames

FROM fcs_useritem a, fcs_checkitem b

WHERE CONCAT(CONCAT(',',a.checkid),',')

LIKE CONCAT(CONCAT('%,',b.itemid),',%')

AND a.userid=':{$urlParam("formid")}:'

上面利用了concat()以及group_concat()这两个函数,它原理是可以用几个字理解:用LIKE 实现IN的功能。

这样的例如有两张表A和表B,A表的一个字段ids是B表字段id的数组,那么给B.id两天加上%,让A.ids字符数组两端加上逗号,拿一个具体的数字举个例子即是,1,去匹配,1,2,3,这个字符串,只要找到一个匹配的就会返回一条记录,用这种方式实现类似于in的查询。

Concat()函数

这个函数常用语连接多个字符串,例如

String Str1="世界";

String str2="你好"

Str3=concat(str1,str2);

Str3="世界你好",这个函数把这两个字符串连接了起来,有时会觉得很有用;

Group_concat()函数,看一下效果

这是一个简单的查询结果,再看一下使用这个函数的效果

该函数实现了将表中查出的某一列数据,转换成一个字符串数组,如上图所示,如果你就是想把查出的某一列转为字符串数组会很有用。

这个多选可以封装为一个颗粒、把公共的东西抽象出来弄成一个个的颗粒,把它封装为一个控件,这个控件有自己的函数获得checkbox值和赋值等方法,还可以封装一些样式等,还在考虑怎么才能把checkbox封装到div标签中,以后再用到时只需要引入这个div标签即可,通过div标签传参控制多选,这涉及到自定义标签怎么弄,在.NET中可以开发用户自定义控件,那么在标签中觉得也是可以开发自定义标签库,还有类似于下拉列表框等等,都可以封装起来。

不知道还有没有别的思路可以实现用户控件、或标签的封装?开发自定义标签查了一下好实现,把开发jar包引入进来实现几个接口就可以定义自己的标签库了,开发自定义标签库可以实现用户自定义功能,方便页面上的布局,同时发现现在的很多产品有关界面框架,无论界面多美观、高端大气,都是封装原始的html标签元素,封装也就意味着可以带了自己心的特性,如果有特殊需求的时候可以自己适当封装一下。

方便别人编程、也提高了开发效率和编码的灵活性。

原文:http://blog.csdn.net/lilongsheng1125/article/details/32070261

mysql自定义多选排序_前端框架(二)DIV多选复选框框的封装和MySql数据库存取...相关推荐

  1. vant weapp 多选上传图片_小程序结合vant weapp的复选框(checkbox)组件实现全选、反选、多选...

    我是结合的vant weapp的checkbox实现的,less代码我就不给了 index.wpy {{list.materail_name}} {{list.materail_brand}} {{l ...

  2. html checkbox 多选 根据数据库来显示选取和未选取,前端框架(2)DIV多选复选框框的封装和MySql数据库存取...

    前端框架(二)DIV多选复选框框的封装和MySql数据库存取 图可以包含的寓意和含义是文字不能比拟的,先有一个效果图你也就知道这篇文章的主要内容是关于什么问题的,省去了一大堆文字的累述,看下面这张图: ...

  3. java控件数组_java通过复选框控件数组实现添加多个复选框控件示例分享

    思路如下: 创建JPanel面板对象: 使用JPanel类的setLayout(0,4)方法设置网格布局管理器,即列数为4,行数自动调节: 创建一个字符串型一维数组作为控件文本数组: 创建一个JChe ...

  4. java控件数组_java通过复选框控件数组实现添加多个复选框控件

    编写程序,通过复选框控件数组事先选择用户爱好信息的复选框,在该程序中,要求界面中的复选框数量可以根据指定复选框名称的字符串数组的长度来自动调节.方法如下: 创建JPanel面板对象: 使用JPanel ...

  5. java checkbox数组_Java通过复选框控件数组实现添加多个复选框控件

    编写程序,通过复选框控件数组事先选择用户爱好信息的复选框,在该程序中,要求界面中的复选框数量可以根据指定复选框名称的字符串数组的长度来自动调节. 思路如下: 创建JPanel面板对象: 使用JPane ...

  6. mysql 中文含数字排序_英语| 124期 Sort 坑爹的字符串排序

    排序功能在系统中很常见,主要是对数字类型的字段进行升降排序.但是针对那些字符串数字或者带字符的数字字符串,普通的Sort排序就会出现各种各样的问题.比如对字符串数字进行降序排序,会出现:9,8,7,6 ...

  7. bootstrap table 适应移动端_前端框架bootstrap和layui有什么区别

    做前端的小伙伴肯定都用过或听过Bootstrap和LayUi,小编我虽然不是专业的前端程序员,但是对于前端还是颇有研究,闲暇事情会经常研究各种前端框架的源码,一来可以借鉴优秀框架的思想,二来可以顺便学 ...

  8. mysql自定义函数的优缺点_浅谈MySQL创建自定义函数漏洞的利用和防止

    前一阵子网上风靡的MySQL的udf.dll提权我有所了解-近日由于不再在IDC行业工作了-所以也有所淡忘- 只是最近实在手痒,就决定对我的站点所在的服务器下手--.正好用上这招了- 站点的服务器是W ...

  9. easyui前端实现多选框_前端:Element UI 多选框组用法笔记

    今天给大家分享一下Element UI 多选框组用法笔记,直接上代码! "兴趣爱好:"> "form.checkList"> for= {{item ...

最新文章

  1. 在RecyclerView的子布局中使用EditText在数据滚动后消失
  2. IDEA界面太丑??尝试一下这几个插件!
  3. 云计算概念诠释:18个权威人士的定义
  4. 计算机技能大赛初赛主持稿,职业技能大赛开幕式主持词
  5. Design Pattern: Adapter 模式 - Object Adapter
  6. 【个人】当我秀智商的时候我秀什么
  7. 空气温湿度光照度传感器
  8. 2020杭电计算机考研经验帖
  9. iPhone 15 高端版本万元起步;华为授权 OPPO 使用其 5G 技术;DeepMind 推出 AI 编剧|极客头条
  10. 欧空局(esa)下载哨兵-Sentinel影像-(史上最全讲解,老少皆宜)
  11. NX 查看NX图标名
  12. 实现中文唇语识别的多种途径
  13. layui框架学习(4:导航)
  14. python和office_微软再出神器,这次终于对Python下手了!
  15. android中多渠道打包的三种方式
  16. 字节也开始缩招了...
  17. 什么叫做副作用的函数
  18. 能ping通域名但是不能访问网页_给自己的网站免费套上cdn加速,访问更稳定
  19. eclipse中CheckStyle的安装和使用
  20. 【系统安全】X509证书介绍

热门文章

  1. Qt使用OpenCV读取图片练习
  2. 深度学习训练中关于数据处理方式--原始样本采集以及数据增广
  3. Slax Linux安装——备忘篇
  4. 论文翻译 基于R-FCN的物体检测
  5. 解决启动flanneld失败的方法
  6. Mac 下搭建环境 homebrew/git/node.js/npm/vsCode...
  7. 关系数据库NoSQL数据库
  8. OC学习之面向对象三大特征
  9. MySQL与MongoDB设计实例对比
  10. NTP时间服务器安装