游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

带你实现简易的JDBC封装

  在我们常规的jdbc操作中,代码冗余问题非常严重,所以我们就想将jdbc六部曲的操作进行封装处理,这样可以我们的操作更方便、简捷。
  演示新增操作:假设我们有一个关于Car信息的数据表,表中有汽车id、汽车名称、汽车颜色、汽车价格,我们此时需要做一个新增操作,我们自己通过Scanner输入要存储的信息,将这些信息写入到数据库中,而问题来了,我们自己手动输入的信息要保存在哪里呢,数组?不行,存是好存但是不方便取用,存了是为了在将数据写入数据库时取用;集合?不行,依然不好取用,domain实体对象,这个可以,我们在存值时,通过有参构造方法将我们手动输入的值存到属性中,在做数据库写入时,由于属性是私有的,所以我们通过getXXX()方法取到属性值。
  1。0版:引入依赖、加载驱动、创建连接、创建命令行对象、执行SQL、各种关闭。缺点:每一次做CURD操作,都要重新写一遍六部曲操作,而每一次的六部曲操作中,只有SQL语句不同,于是就有了2。0版
  2。0版:将SQL语句作为参数传递给CURD操作方法,这样每一次新的操作只需要更改SQL语句即可,但是依然存在很大的问题,1。0版和2。0版都存在SQL注入问题,非常的不安全,所以就有了3。0版。
  3。0版:通过采用预处理方式解决SQL注入问题,通过传递参数数组为预处理中的?赋值,操作如下,Parma数组中装有参数数据,通过pstst。setObject()方法为?赋值。for(inti0;iparma。length;i){通过for循环遍历为?赋值pstst。setObject(i1,parma〔i〕);}与问号对应的值来自于我们事先手动装好的数组中,如下Object〔〕parmanewObject〔〕{car。getCanme(),car。getColor(),car。getPrice()};
  但是尽管这样做了,我们使用起来还是不方便,因为我们需要将?所需的参数数据装入到数组中,装入数组的过程很麻烦,试想:假如有100个getxxx()方法,我们在装的时候,需要手动装100个getxxx()方法,所以我们想,这个将getxxx()方法装入数组的过程,能否交给程序做呢?那么答案是肯定的,所以就有了4。0版
  4。0版:在3。0版的基础上增加了将getxxx()方法通过程序代码的方式自动装入数组的过程,这样就方便了我们的使用。具体的代码操作如下:我们需要传递一条特殊的SQL语句,如:Stringsqlinsertintocarvalues(null,{cname},{color},{price});但是这样写jdbc在读取数据库时并不认识,所以就需要SQL处理器经我们传递的特殊SQL语句处理成jdbc认识的SQL语句,通过SQL处理器会得到两个信息,第一个:jdbc认识的SQL语句;第二个:通过在处理的过程中我们从{key}中得到的key值。Stringsqlinsertintocarvalues(null,{cname},{color},{price});作用:将原SQL语句中的{}更换成?,并将{key}中的key保存到SQLInfo对象中publicSQLInfogetSql(Stringsql){StringBuilderbuildernewStringBuilder();用于存储key值while(true){循环,直到没有{key}组合为止,跳出(break)循环intk1sql。indexOf({);找到{所对应的索引intk2sql。indexOf(});找到}对应的索引if(k1!1k2k1){判断{和}的索引位置是否获得到了Stringkeysql。substring(k12,k2);通过subString将{key}中的key截取出来builder。append(key);截取出来后,拼接到事先准备好的builder字符串中builder。append(,);key1于key2之间用逗号隔开if(k2sql。length()1){判断还有没有下一对{},如果有,则:sqlsql。substring(0,k1)?sql。substring(k21);将key值取出后,把{}替换成?continue;}else{如果没有,则:sqlsql。substring(0,k1)?;break;}}else{若没有{}组合后,则让循环终止break;}}returnnewSQLInfo(sql,builder。toString()。split(,));将处理好的SQL语句和在处理过程中得到的key值存入domain对象(SQLInfo)中}方法二,通过参数数组得到getxxx方法,从而通过getxxx方法得到对应的属性值publicObject〔〕getParmaValue(Objectparma,String〔〕keys){Object〔〕parmaValuenewObject〔keys。length〕;将通过getxxx()方法得到的属性值存入数组中for(inti0;ikeys。length;i){keys〔0〕cnameStringmethodNamegetkeys〔i〕。substring(0,1)。toUpperCase()keys〔i〕。substring(1);getCname,通过循环,参考SQLInfo中key数组得到,属性对应的getxxx()方法System。out。println(methodName);打印输出获取到getxxx名字Classclazzparma。getClass();得到Parma类的类映射try{Methodmethodclazz。getMethod(methodName);通过反射机制操作Parma中的方法,getxxx()方法Objectkeymethod。invoke(parma);执行getxxx()方法parmaValue〔i〕key;并将得到的属性值存到事先创建的数组中}catch(Exceptione){e。printStackTrace();}}returnparmaValue;返回含有属性值的数组}
  通过SQL处理器,我们将getXXX()方法通过程序装入到了数组中,接下来我们就可以执行CURD操作了。publicvoidinserttext(Stringsql,Carcar){调用处理器中的SQL语句处理方法SQLProcessorprocessornewSQLProcessor();通过处理得到jdbc认识SQL语句和{key}中的key值SQLInfoinfoprocessor。getSql(sql);通过找到的key值,得到相应的getxxx()方法,并存入数组中Object〔〕methodprocessor。getParmaValue(car,info。getKeys());执行sqlSession类中的新增方法sqlSessionsessionnewsqlSession();将处理好的SQL语句和装好的数组交个jdbc,做新增操作session。insert(info。getSql(),method);}

雪中悍刀行褚禄山结局是什么,雪中悍刀行褚禄山扮演者雪中悍刀行说出很多人清楚,可雪中悍刀行剧情中褚禄山发生结局是什么样的,很多网友就想去了解一下有关的故事,看雪中悍刀行提前安排好褚禄山的结局,不过发展最后给展现,但有的网友就不清……民警老林的幸福生活什么时候播出,民警老林的幸福生活演员表民警老林的幸福生活说出来很多人不清楚,可民警老林的幸福生活电视剧是什么时候播出,很多网友就想去了解一下有关的故事,看民警老林的幸福生活提早公布海报和预告片,但有的网友就不清楚民……中国十大恐怖的片你敢一个人看吗中国十大恐怖的片:你敢一个人看吗第一名:鬼域房间内似有神秘物体出现,断了的长发散落在地上,徐寻感觉室内并不只她一个人!神秘黑影再三出现令她更加恐,一天晚上,一人乘坐……跌了一部iPhone12,折叠屏旗舰性能,三星旗舰机已跌至白在国内,有一个手机品牌的存在感几乎为零,而它在全球的手机市场中却一直处于霸主的位置,它就是三星,自从三星盖乐世7系列在国内频频发生爆炸还不积极处理之后,三星的口碑一落千丈,从曾……无心法师结局意想不到的虐心大结局(图)无心法师虐心大结局,令人神烦的苏桃居然最惨!《无心法师》2在粉丝们无限期待中到来,却要在无尽吐槽中走向大结局了。因为有第一部的珠玉在前,第二部总给人狗尾续貂的嫌疑,无论是无心一……荣耀X20上手评测6。67英寸超窄边框全视屏66W快充荣耀X系列作为荣耀爆款系列之一,不少用户也在期盼,荣耀X系列到底什么时候回归?没错,这个夏天,它回来了。。。。。。最新发布的荣耀X20会带来什么不凡体验呢?熊姐带大家一起……神探大战上映时间,神探大战剧情悬疑电影《神探大战》安排在2022年4月2日全国上映,来给观众带来自封神探的凶手和真正的神探鬼才去产生出斗智斗勇,过后寻找案件背后的事情,并能发现谁为真正的神探的结果。1神探大……振华三部曲的人物关系是什么振华三部曲学霸排名振华三部曲可以说是书写了我们青春的所有可能!不过,有很多网友就很好奇,振华三部曲里面的人物有没有直接联系呢?如果有关系是什么?振华三部曲学霸排名又是如何的?下面揭晓一起去了解了……魅族官宣搭载鸿蒙!一起拥抱全场景智能生活5月28日午间,魅族智享生活发布微博官宣,魅族将联手鸿蒙,一起打造全场景智能生活。魅族的智能生活发布会将于5月31日14:30正式开启,届时将带来智能手表等多款产品。……恋恋不忘大结局介绍,恋恋不忘吴桐二胎生下了吗都市剧《恋恋不忘》给带来单亲妈妈吴桐带着儿子吴童童在大都市生活,别看日子过得清贫,到充满着希望和快乐,直到进行结局有仲谋找回吴桐说清楚事情,并产生吴桐二胎顺利生下女儿了。……OPPO又要秀肌肉!未来影像技术发布会将于8月19日举行在公布了一系列的充电技术积累后,OPPO又准备再次举行技术发布会,这次将围绕影像作为主题,相信OPPO也精心准备了一堆与影像相关的新技术给大家秀肌肉。从OPPO给出的预告……复联4预告片最新的预告片复联4气氛悲壮大结局要来了吗复联4预告片最新进展,复仇联盟4首个2分26秒预告片发布,鹰眼蚁人回归,钢铁侠绝望留遗言,美队独自流泪。复联4的中文翻译叫ldquo;终局之战rdquo;,而从预告片也可以看得……
不仅配置被泄密,iPhone13的价格和上市时间也被提前剧透苹果新的iphone13系列预计很快就会推出,而最大的泄密消息表明,我们将在2021年9月的某个阶段看到新的iPhone。您不必等到那时才能听到有关新iPhone13的消息。……债券雷潮之下,清华北大,开的公司一样垮很多开公司的老板,都喜欢去清华北大镀镀金,去读个MBAEMBA总裁班啥的,结交几位名人,学点真金白银的本事,把自己家的公司发展壮大。不过,最近这些老板们还是要考虑下了,因……法学精英海外带100多份药毒死百亿游族老总,什么仇什么怨?最近游族的事情沸沸扬扬,我一个不打游戏的人,现在都知道游族都出了哪些游戏了。游族几个公告看下来,就发现一点,上市公司的话不可信。每次辟谣跟造谣一样,还是官方的,以后股民们……惠州之巽寮湾在广东的海边沙滩除了深圳的大小梅沙、阳江海陵岛、沙扒湾等,就是惠州的巽寮湾出名了。从广州开车过去三小时左右,一路上跨海大桥风景非常好推荐拍照留影(注意安全喔)。过了桥就下高速一……消息称谷歌Pixel7系列继续搭载三星基带芯片财经网科技2月20日讯,据TechWeb消息,有消息表示谷歌正开发Pixel7系列旗舰,谷歌Pixel7系列除了预装Android13操作系统之外,该机另一个备受关注的方面则是……如何通9。9竞价活动引流,为店铺打造爆款淘宝商家应用接口拼多多9。9竞价活动怎么做,如何通过拼多多9。9竞价活动引流,为店铺打造爆款【淘宝商家应用接口】拼多多9。9竞价活动一直特别受商家欢迎的活动,这个活动如果运用的好能实现低……你会为了喜欢的明星去花钱买代言吗,比如肖战,谷爱凌?会的。不过不是为他而买单,而是自己需要的类型正好有他代言的产品,比如去买洗发水沐浴露,如果有肖战代言的,我就会选择他代言的那个品牌。之前资本家为了销量,弄一个榜单出来,排……再见,单身狗!Java创建对象的六种方式,总有一种适合你背景又到一年一度的情人节了,祝各位程序员有情人终成眷属!情人节写点什么好呢?!有座的各位肯定还有不少单身dog吧?没关系,栈长本文教你创建对象的6种方式……11寸巨屏流媒体记录仪捷渡大屏流媒体记录仪,不仅可以手机wifi互联,而且还有倒车影像、分屏显示等功能,国庆出行用它更方便!这款捷渡大屏流媒体记录仪能以屏代镜,11寸巨屏可以显示的范围比10寸……618想低价买iPhone12的看过来这几种方法可以试试618购物节到了,很多果粉都在关注最新的iPhone12价格,虽然各大电商平台促销广告吹得天花乱坠,但最终的到手价还是要5000多,很多等等党依旧只能望机兴叹,那么有没有办法能……小身材蕴含大能量,SANAGM12SPro体验前言:蓝牙音箱类的产品有两种比较受消费者欢迎,一种是家庭类使用的AI智能音箱,一种则是户外使用的蓝牙音箱,两种音箱都各自有着优势,针对喜欢听音乐又喜欢户外旅行的人来说,选……用单反相机拍摄超级红月亮的参数怎么设置?用单反拍摄超级红月亮,首先要考虑的就是配置一个可靠的三脚架。相机参数:使用手动曝光M档,感光度ISO1000,光圈f5。6至f16之间,白平衡日光或者K值52005600……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网