当一个立志成为程序员的人开始一门新技术的学习时,是很兴奋的,由于不少新技术的介绍老是有不少酷炫的新名称,酷炫的新功能和一些与旧技术的对比,在对比中,新技术老是用各类对比数据把旧数据踩在脚底,彰显本身的高富帅。因而,火烧眉毛的新手开始了新技术的探索之旅,全然忘记了他为何要学习这门新技术,双眼也看不清这些酷炫技术后面的坑。因而,当新技术的酷炫外衣剥去以后,坑历历在目,连上网络,搜索半天却由于技术太新而无人应答,这时候新手变成了怨念在苦手,在坑中暗暗哭泣。程序员
我对新的技术老是很提防,由于它就像游戏的战争迷雾,风险隐藏其中,不走近根本就不知道。但一门技术的出现,老是光芒万丈,都是要砸掉旧技术的锁链,解放生产力,提升一个数量级的性能,等等等等,好不诱惑。怎么平衡技术的风险和效益呢,下面我说下个人判断标准。redis
对我而言,我通常从很世俗的标准来评判这个问题,那就是是否能帮我解决问题。是的,我通常都是心怀问题在各类技术中游走,只有这样,你才会知道你要什么,对我而言,我须要的第同样东西,就是少干活,多产粮。为何要用spring,由于IOC?由于POJO?由于AOP?No,都9012年,谁还在意这个,我用spring的惟一缘由是它几乎关联了市面上全部的流行工具,各类DAO(hibernate,mybatis),各类MQ(activemq,rabbitmq),各类缓存(memcache,redis),基本上你们用的主流技术工具或多或少都能和spring关联上,这样就极大的节省我用各类工具的时间。到spring boot的时候,其实我是有意见的。由于spring boot号称是为了简化你们的配置工做,但在现实的业务的世界,复杂是不可避免的,若是在入门的时候简单了,那么在后面必将要补回来的,由于复杂的本质是业务的复杂,没有谁可以抹平复杂的业务,因此复杂的配置也必然存在。可是start的出现解决了spring和各类工具的依赖包问题,这个确确实实的比我自个在maven的pom中去加jar包要省事的多,jar地狱的问题有所缓解。因此我最后决定使用spring boot的最大缘由,就是starter。记住这个缘由很重要,由于咱们每用一个新的技术工具,技术框架,其实都要明确的问本身,为何要用,解决了什么问题。spring
而后再说下mybatis,mybatis通常的说法是比hibernate要灵活,要轻量级。但很差意思,我一开始就不是用mybatis对标hibernate,由于个人sql还不错,因此对任何包装sql的dao工具都不是感冒,我都能用sql搞定了,为啥要用一个包裹了sql的工具。是的,我对标的是jdbctemplate,它其实很好用,灵活好用,简单方便,我如今有时候仍是喜欢它。那为何要用mybatis呢,由于它能返回dataobject?这是一个缘由,由于一个数据对象的可读性,比用jdbctemplate返回的map要好看一些,但这不是根本缘由,由于jdbctemplate也能够返回 数据对象,mybatis并无绝对的优点。是的,我最终选择的其实不是mybatis,而是mybatis generator,由于它能够帮我生成全部基础的crud代码,我不须要改任何东西。拥有它,我就拥有了全部数据表的dataobject和全部的CRUD,是针对全部表的全部字段的查询,这个很重要,由于我已经不肯意一遍又一遍的写基本的CRUD语句了,特别是修改了数据库表的时候。这就是选择mybatis generator的缘由,我不想写CRUD,不想改CRUD操做代码,这就是我须要用它解决的问题。sql
这一篇算是废话,由于程序员通常不爱看这个,show me the code,下一章,咱们开始从spring boot的新建项目开始,但我不会简单的重复别人的作法,我会在创建的时候,带上我掉的坑来说。数据库