大家好,今天给各位分享校园照片墙网站源码分享的一些知识,其中也会对校园照片墙设计进行解释,文章篇幅可能偏长,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在就马上开始吧!
SpringBoot基础(五)
前言
大家好,一直以来我都本着用最通俗的话理解核心的知识点,我认为所有的难点都离不开「基础知识」的铺垫
适合人群
学完Java基础想通过Java快速构建web应用程序想学习或了解SpringBoot
「大佬可以绕过~」
背景
本节给大家讲讲「Java的SpringBoot框架」,之前我们学习的都是java的基础知识和底层提供的一些能力,我们日常工作都是在写接口。在我们在产品开发中,一般我们都会选择比较稳定的框架来帮我们加速开发,不会自己去造轮子,而在java众多框架中,spring框架表现的非常好,大部分公司都会首选它作为开发框架,而至今,大部分企业都是以springboot来构建项目了~
情景回顾
今天是第五期的内容了,如果你是一路看过来的,很高兴你能够耐心看完。上期带大家学习了MyBatis框架的基本使用,体验了一下如何crud,本期带大家体验一下高级一点的功能。最近github可能会被墙,所以我把源码放到了国内gitee上,本节我们依然使用上期的代码
往期内容
我的博客Springboot入门Springboot基础(一)Springboot基础(二)Springboot基础(三)Springboot基础(四)
项目源码(持续更新??)
springboot-all
上期遗留问题
我们先从一个小例子说起,如果你是细心小伙伴或许业务试过这个语句。我们之前查询所有数据的时候并没有加条件,这次我们加个条件试试,之前我们都是用=号,我们换个比较大小
修改一下xml:
<selectid=&34;resultMap=&34;>\nselect*fromuser_rolewhereid>1\n</select>\n
我们再执行一下,结果发现正常返回数据,说明是认我们这个>符号的,我们再改成“`<““试试
<selectid=&34;resultMap=&34;>\nselect*fromuser_rolewhereid<1\n</select>\n
再重启一下,好家伙,还没等执行请求呢,就干报错了(〃>皿<),报错内容:
Causedby:org.xml.sax.SAXParseException:元素内容必须由格式正确的字符数据或标记组成。\n
我可以得知,这个xml解析发生在编译阶段,说明这个<““,我们Mybatis“`标签是不认的,那这个问题怎么解决呢?
使用<![CDATA[…]]解决字符问题
下面我们就解决一下这个问题:
<selectid=&34;resultMap=&34;>\nselect*fromuser_rolewhereid<2\n</select>\n
<这个字符是转义字符,我们重启一下,发现一切都正常。因为我们的语句相对简单,所以这样写是完全可以的,但是如果很复杂的呢?难道一个个这样写吗?一方面不利于代码维护,一方面容易出错,还不利于阅读,教大家一个更加方便的方法:
<selectid=&34;resultMap=&34;>\n<![CDATA[select*fromuser_rolewhereid<2]]>\n</select>\n
没错,只要把语句塞进去就好了,作用就是帮我们自动转换字符,安全性也高一些,后续的演示我们直接修改xml,就不修改原有的接口和控制器类了,我们这节重点学习标签
<sql>标签
这个标签的作用,类似于拆分,把sql部分语句拆出去然后还可以引用它,我们把之前的例子改写一下:
<sqlid=&34;>\n<![CDATA[select*fromuser_rolewhereid<2]]>\n</sql>\n\n<selectid=&34;resultMap=&34;>\n<includerefid=&34;/>\n</select>\n
是不是很简单,这个作用就是帮助我们把复杂的sql进行拆分和复用,避免繁琐
<trim>&<if>标签
这两个标签为啥要一起讲,因为通常我们都是一起配合使用的,单独使用其实也可以,以查询某个用户角色为例:
<selectid=&34;resultMap=&34;>\nselect*fromuser_role\n<where>\n1=1\n<iftest=&34;>\nANDid=34;getRole&34;userRoleMap&34;WHERE&34;AND&34;id!=nullandid!=0&{id}\n</if>\n</trim>\n</select>\n
你可能有疑问?了,where和and去哪了,这肯定报错。话别说太早,小伙子,运行一下看看,好家伙正常。你之前给我讲的小技巧好像没这个厉害
trim它的主要作用是帮我去掉一些多余的东西,比如and,,,()这种,因为每次我们判断都要加这些玩意,很容易忘了加了,所以干脆我就不要了。这里说的去掉不是真正意义上的删掉,而是转化。所以它的标签上有两个属性prefix,prefixOverrides,他两就干这事的,还有一个suffix,这里就不演示了,留给大家自己试~
结束语
本期就到这里结束了,其实还有很多标签,大家可以自己尝试一下,有些其实可以在代码层面处理,说多一点,这些标签可以组合使用,但是不是说让你炫技,看谁写的复杂,像xml文件标签过多很不利于维护,如果你写的很复杂,别人看不懂咋办,过久点自己都看不懂了,所以能简洁的就简洁,能在代码层面处理的在代码层面处理,sql如果过于复杂,比如参与了运算,数据量大的时候,很影响性能,如果你的sql慢查询了导致接口阻塞,后边请求量上来,你的系统几乎就瘫了,mysql也会被影响,其它服务也可能连接着它,也会收到影响,会造成雪崩
下期预告
其实学到这里,做一个简单的博客系统,已经够应付了,但还不够,离真正业务开发还差很多。那么差在哪里呢?差在基础建设,说的有点抽象,意思就是一个健壮的系统需要一个好的基础架构,而架构需要使用复杂的技术,大部分是经过很多验证的开源技术,把它应用到我们的项目中,这也就是我即将要讲的进阶部分了。
在进阶部分中,你将学习到各种新技术,这也是目前市面上企业级开发中常用的技术栈,如果基础部分还不够熟悉,请先看完它们,尝试自己写个博客应用。下期给大家讲的是缓存中间件Redis的使用,同样的我们集成到SpringBoot中。我们下期不见不散,关注我,不迷路~
关于校园照片墙网站源码分享和校园照片墙设计的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
