当前位置: 首页 > wzjs >正文

网站 建设平台分析wordpress调整文章编辑界面

网站 建设平台分析,wordpress调整文章编辑界面,厦门网页制作厦门小程序app,个人主题网站设计论文问题场景: 我开发的是一个论文选择系统。 后端用一个论文表paper来存储论文信息。 论文信息中,包含前置课程,也就是你需要修过这些课程才能选择这个论文。 而一个论文对应的课程有很多个。 这样就造成了一个数据库存储的问题。一个paper…

问题场景:

我开发的是一个论文选择系统。

后端用一个论文表paper来存储论文信息。

论文信息中,包含前置课程,也就是你需要修过这些课程才能选择这个论文。

而一个论文对应的课程有很多个。

这样就造成了一个数据库存储的问题。一个paper里面要存储多个course。如何解决这个问题。

方案一:

在创建paper表,存储course,可以将course存储为一个字符串,用指定的分隔符分割。在取出数据的时候。在service层将字符串再重新解析成数组的形式。

这种方案好处是在数据库层面非常方便,但是在service层非常麻烦。

如果需要对paper和course进行修改和删除也将非常的麻烦。需要一遍一遍的解析字符串,修改,重新生成字符串。

而且还有一个重要的问题。如果面对团队合作,这种方法十分受限,因为别人不知道,甚至有一天自己都忘了自己设置的分割符是什么了。

所以这种方法不太可取。

方案二:

我们创建一个中间表。记录这paperId和courseId的对应。

这样你的paper里面就不需要有course等这种字段了。

这种方式的好处就是容易维护,也比较容易理解。

代码实操:

增加

增加paper的时候,只需要获取到paperId和courses数组中的courseId然后调用paper_course中间表的添加操作即可。

这里默认大家熟悉对数据库基础的增删改查。

但是有一个问题。

当在service层插入paper的时候,paperId还没生成。

其实这个无需担心,你只需要先插入paper,然后你在paper里就可以拿到了。

service层

    public void add(Paper paper) {paperMapper.add(paper);addMiddleData(paper);}private void addMiddleData (Paper paper) {Integer paperId = paper.getId();List<Integer> courseIds = paper.getCourseIds();List<Integer> languageIds = paper.getLanguageIds();List<Integer> technologyIds = paper.getTechnologyIds();if (courseIds != null && !courseIds.isEmpty()) {for (Integer courseId : courseIds) {paperCourseMapper.add(new PaperCourse(paperId, courseId));}}if(languageIds != null && !languageIds.isEmpty()) {for (Integer languageId : languageIds) {paperLanguageMapper.add(new PaperLanguage(paperId, languageId));}}if (technologyIds != null && !technologyIds.isEmpty()) {for (Integer technologyId : technologyIds) {paperTechnologyMapper.add(new PaperTechnology(paperId, technologyId));}}}

paperMapper

<mapper namespace="com.paper.mapper.PaperMapper"><insert id="add" parameterType="com.paper.entity.Paper" useGeneratedKeys="true" keyProperty="id">insert into `paper`<trim prefix="(" suffix=")" suffixOverrides=","><if test="id != null">id,</if><if test="teacherId != null">teacher_id,</if><if test="studentId != null">student_id,</if><if test="name != null">name,</if><if test="resource != null">resource,</if><if test="content != null">content,</if><if test="studentGroup != null">student_group,</if><if test="type != null">type,</if><if test="gpa != null">gpa,</if><if test="requirement != null">requirement,</if></trim><trim prefix="values (" suffix=")" suffixOverrides=","><if test="id != null">#{id},</if><if test="teacherId != null">#{teacherId},</if><if test="studentId != null">#{studentId},</if><if test="name != null">#{name},</if><if test="resource != null">#{resource},</if><if test="content != null">#{content},</if><if test="studentGroup != null">#{studentGroup},</if><if test="type != null">#{type},</if><if test="gpa != null">#{gpa},</if><if test="requirement != null">#{requirement},</if></trim></insert><delete id="delete">

查询

要查询paper表,需要连接表。

我这里想着重说一下连接表的一个小技巧。

如果只有一个中间表的话,直接用join可能会好一些。然后直接把想查的元素全都查出来就好了。

但是我的场景是,我有三个中间表。

我需要一直join。

并且我要以数组的形式查出来。直接查无法实现这样。

我在course表中,定义一个查询

    <select id="selectCourseByPaperId" resultType="com.paper.entity.Course">select c.*, pc.paper_id from course cleft join `paper-sys`.paper_course pc on c.id = pc.course_idwhere paper_id = #{paperId}</select>

这个查询是查询course表中对应paperId的所有course

在paperMapper.xml中定义一个resultType

    <resultMap id="PaperResultMap" type="com.paper.entity.Paper"><id property="id" column="id" /><result property="teacherId" column="teacher_id" /><result property="studentId" column="student_id" /><result property="name" column="name" /><result property="resource" column="resource" /><result property="content" column="content" /><result property="studentGroup" column="student_group" /><result property="type" column="type" /><result property="gpa" column="gpa" /><result property="requirement" column="requirement" /><collection property="courses" ofType="com.paper.entity.Course"select="com.paper.mapper.CourseMapper.selectCourseByPaperId"column="id"></collection><collection property="languages" ofType="com.paper.entity.Language"select="com.paper.mapper.LanguageMapper.selectLanguageByPaperId"column="id"></collection><collection property="technologies" ofType="com.paper.entity.Technology"select="com.paper.mapper.TechnologyMapper.selectTechnologyByPaperId"column="id"></collection></resultMap>

我这里是关联了三个表。

一个表理解了,三个表一样的。

这个定义了我要的resultType,因为刚刚说了,我要保证我能接受到结果数组。

所以数组部分用collection来接收。

而这个collection连接这刚刚对应的select

也就是这个数组已经被查出来了。

    <select id="selectByPage" resultMap="PaperResultMap">select * from `paper`<where><if test="teacherId != null">and teacher_id = #{teacherId}</if><if test="studentId != null">and student_id = #{studentId}</if></where></select>

最后使用resultMap来定义接受的格式。

那么我们就完成了查询。

是不是非常的优雅呢?

这虽然比join一堆麻烦,但是当代码跑通的那一刻,一切都值得。


文章转载自:

http://jzYZyiwP.gqtqj.cn
http://UkP4OPHc.gqtqj.cn
http://EDVGEY5o.gqtqj.cn
http://6OHguO4T.gqtqj.cn
http://tTWwh0x6.gqtqj.cn
http://7Vt8autz.gqtqj.cn
http://ixcEJGvF.gqtqj.cn
http://1pBiXEK9.gqtqj.cn
http://2dEEc9c0.gqtqj.cn
http://jmRb5KRd.gqtqj.cn
http://VJQmMXU1.gqtqj.cn
http://xv6zXXwr.gqtqj.cn
http://8v3tTGoM.gqtqj.cn
http://WdyrUzY7.gqtqj.cn
http://ypvwAXqr.gqtqj.cn
http://otmCBp9J.gqtqj.cn
http://D26hvJr9.gqtqj.cn
http://Ev7MsTUI.gqtqj.cn
http://cj4RF83e.gqtqj.cn
http://IBq3EFPu.gqtqj.cn
http://FfHtghPG.gqtqj.cn
http://uf69PIAX.gqtqj.cn
http://pYzjRHYl.gqtqj.cn
http://ulZOr8l6.gqtqj.cn
http://swZpkd8m.gqtqj.cn
http://dmieUgqr.gqtqj.cn
http://j33IvAgQ.gqtqj.cn
http://RQ3KYfxL.gqtqj.cn
http://hYFMgUXc.gqtqj.cn
http://C9PbHnaE.gqtqj.cn
http://www.dtcms.com/wzjs/629677.html

相关文章:

  • 手机单机游戏网站大全wordpress 过滤
  • 成都建设网站价格网站建设推广新闻
  • 网站建设明薇通网络价格美丽荣成做网站
  • 农村建设设计网站首页网站代备
  • 广州微型网站建设重庆网站建设途锦科技
  • 长沙企业官方网站建设网站彩票网站开发
  • 肥城网站建设英文网站建设需要注意的五点问题
  • 推广网站的方法jsp做的网站答辩问题
  • 网站一年多少钱东莞海边网站建设工作室
  • 欢迎访问中国建设银行官网济南网站自然优化
  • dz论坛网站创建页面浙江壹设软装设计有限公司
  • 北京网站开发公司一网天行成都高标建设有限公司官方网站
  • 温州做网站哪个好个人作品网页设计
  • 从事网站建凡客官方网
  • 好用的网站后台管理系统网站建设和维护一年的费用
  • 网站定制开发建设企业网站模板购买
  • 布吉网站设计潍坊定制网站搭建
  • 山西建站公司建筑施工图纸培训班
  • 网站建设费用兴田德润团队哪里可以免费申请空间 注册域名 申请网站
  • 广州企业网站设计制作网页开发步骤
  • 成都网站建设公司招聘上海外贸网站制作
  • 网上竞价采购网站建设宝和网站建设
  • 广州商城型网站建设用enfold做的网站
  • 提高网站的权重的最佳方法我的公众号
  • 如何选择徐州网站开发台州市建设规划局网站
  • 地下彩票网站建设华升建设集团公司网站
  • 企业网站建设课程设计做网站产品介绍
  • 广州 网站开发 appWordpress卡片主题
  • 网站用户体验设计wordpress子网站
  • 网站改版原则网站建设3lue