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

行业网站大全做视频网站每部电影都要版权

行业网站大全,做视频网站每部电影都要版权,电子商务网站有哪几种,关键词挖掘机爱站网1.什么是My—Batis? My—Batis是一个持久层框架,提供了sql映射功能,能方便的将数据库表和java对象进行映射,通过My—Batis可以将项目中的数据存储在数据库中,以便我们进行调用。值得注意的是My—Batis和spring不是一回…

1.什么是My—Batis?

My—Batis是一个持久层框架,提供了sql映射功能,能方便的将数据库表和java对象进行映射,通过My—Batis可以将项目中的数据存储在数据库中,以便我们进行调用。值得注意的是My—Batis和spring不是一回事,它们完全是两个框架,并不是说使用My—Batis就一定要用spring框架,不过我们后面进行代码演示时会用到spring框架的测试环境,

2如何使用My—Batis

利用My—Batis操作数据主要有两种方法:注解法和xml文件法,接下来我们一 一讲解。

3.使用注解实现crud

补充:要用的数据表
在这里插入图片描述
在实际项目中,我们处理数据的逻辑是:Controller—>Service—>Mapper(Mapper层有很多接口,每个接口对应一张表的业务逻辑)
也就是说当我们Controller层接收到请求后,会调用Service层进行业务逻辑处理,而Service进行处理时又往往会调用Mapper层方法,Mapper层就是我们真正使用注解写方法的地方,举个例子:
在这里插入图片描述
如上图:当用户访问getUserInfo方法时想要用数据库中获取用户信息就会调用userInfoService层的方法在这里插入图片描述
看!在Sservice层中调用了userInfoMapper层的方法
在这里插入图片描述

而Mapper层中的UserInfoMapper接口就实现了该方法,使用注解查询了用户信息。

3.1@select

补充:select语法:
select 字段名1, 字段名2, …
from 表名
where 条件;

顾名思义,就是进行查询操作,我们观察上图的数据表,要想查询用户表的gender为1的用户的所有信息该怎么写呢?
1.在Controller层写方法,传参数为1,调用Service层中方法
在这里插入图片描述

在这里插入图片描述
Service层中调用Mapper层方法,注意返回值类型,因为gender为1的数据肯定不止一个,所以我们用List接收

在这里插入图片描述
上面写的这个属于带参查询,注意第一个gender是指表中字段名,第二个gender就是我们传 的参数。gender=#{gender}经过编译后就成了gender=1,为什么要用#{]将参数括起来?嗯格式就是这么规定 的,你要用这个框架就要按这个格式写,总比手撕JDBC强吧。。
当然我们也可以传多个参数,中间使用and连接就好。

3.2@delete

补充delete语法:
delete from 表名
where 条件

;
这个注解用于进行删除操作,我们照例进行代码演示,不过由于Controller—>Service—>Mappe有点麻烦,我们可以直接在Mapper接口中写方法,然后借助spring框架 中的test测试环境进行演示,具体步骤如下:
1.在接口中写delete方法
在这里插入图片描述
2.生成test方法
首先鼠标右键单击——找到并点击Generate——点击Test——根据方法名找到方法并勾选——点击OK(弹出ERROR是正常的,接着 OK就行)
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
随后在Test文件夹中对应接口生成的Test文件中就可以找到该方法,好处显而易见:我们可以直接测试该方法是否生效(通过刷新数据库),而不用在Controller层和Service层再写然后通过http请求调用该方法以测试方法是否生效。

3.测试delete方法
在这里插入图片描述
执行前:
在这里插入图片描述
执行后:
在这里插入图片描述
可以看到Id为20的用户信息已经被删除了 。

3.3@update

My—Batis能够将sql数据库表与java对象进行映射,可能在前两个注解我们体会不到这重意思,但是从这个注解我们就能感受到My—Batisd的便捷性,

更新数据库表中信息我们采取什么方式?一张表对应一个类,对于user_info表我们创建一个userInfo类,类中属性也与表中字段名一 一对应,当然我们用小驼峰的写法而不是_.如下图:
在这里插入图片描述
注解内更新语句就按照sql语句的规则写:
update 表名
set 字段名1 = value1, 字段名2 = value2
where 条件;

在这里插入图片描述
验证时刻:
在这里插入图片描述

在这里插入图片描述

我们观察这个SQL语句:
update user_info set username=#{username},password=#{password} where id=#{id}
第一个username是指表中字段名,而#{}中的则是我们所传递的参数,其他也是同理。
一个类对应一张表,一行信息对应一个对象,我们通过New一个对象作为参数传递,通过设置这个对象的属性信息来修改表中信息,新增信息也是同理,这就是My—Batis的SQL映射的功能。

3.4@insert

insert语法规则:
insert into 表名(字段名1,字段名2,字段名3)
values (值1, 值2, 值3, …);

在这里插入图片描述

在这里插入图片描述

所以用注解写基础的crud很简单,
**@注解类型(”SQL语句“)**就OK了

3.5#{}和${}的区别

虽然我们上图使用的一直是#{},但其实我们也可以使用${}去传递参数,关于它们之间的不同请看下图:
在这里插入图片描述
在这里插入图片描述
#{}是通过占位的方式传递参数,有点类似于c语言的占位符。如果识别到传递的参数是String类型,会自动添加引号。【预编译SQL】

${}则是将接收到的参数直接拼到sql语句中。【即时SQL】

两者各有优劣,假如说我们写了一个查询语句并将查询到的信息按照自增ID降序排序,我们如果使用 order by ID #{values} 就会出现语法错误,因为你写的是字符串,编译之后就成了:
order by ID ‘desc’ ,自动多了个字符串,就很难搞,这时使用${}就很合适, 填什么就是什么。

SQL注入

但是我们为什么不常用${}?因为也会导致SQL注入问题,所谓SQL注入就是利用即时SQL的特性在参数上添加关键字来改变定义好的SQL语句,以此查询数据,攻击数据库等等。。。如下图:
在这里插入图片描述
对这个sql语句,我传的参数是:fff’ or 1=1,通过or关键字绕过了where条件审查,直接查出来了该表所有的数据,我这写的还只是username,如果是密码呢?0我这还只是查个数据?如果是修改数据呢?如果我直接删表跑路呢?

那么如何避免sql注入问题呢?

我们可以在使用${}时候对接收的参数进行检查,比如排序功能,当参数不是desc或者asc的时候直接打回。

XML文件操作数据库

1.在.pom文件中配置相关依赖,
2.然后在resoures路径下找到.yml文件,指明xml文件位置。
xml文件一当要保证在resources路径下
在这里插入图片描述
3.通过namespace将 这个xml文件与对应的Java接口绑定,如下:
在这里插入图片描述

然后接口我们依然建在Mapper层,接口中写方法,方法的具体实现也就是sql语句,我们不使用注解写在方法上面,而是写在xml文件中

4.使用xml文件实现crud

4.1select

1.接口中写方法
在这里插入图片描述
可以点击generate statement或者按Alt+Enter在对应的.xml文件快捷生成具体实现方法,如下:
在这里插入图片描述

2.在标签内写sql语句就可以了,不用加引号,为什么会直接生成select标签呢?因为MyBatis发力了,简单理解就是方法名中包含select关键字,被检测到了,帮你生成的具体实现才有标签,不信你写个不包含crud的方法名,它自动生成的时候就不知道用哪个标签了,非要你去指定一下才行。
在这里插入图片描述
测试成功!

4.2delete

在这里插入图片描述
在这里插入图片描述

4.3update

在这里插入图片描述
在这里插入图片描述

4.4insert

在这里插入图片描述

在这里插入图片描述

5.动态SQL

5.1什么是动态SQL

动态SQL就是SQL语句不写死,取决于用户传递的参数,条件等等

5.1为什么要用动态SQL

在这里插入图片描述

在这里插入图片描述

看上图,假如我现在要写一个插入信息的方法,但 这个表所有字段都可以为空,那我参数列表就可以有很多中组合,难道我每一种组合都要在接口写一个对应的方法吗?嗯?要吗?回答我?look in my eyes!
额虽然这也是一种方法,,但我们作为程序员必须严格执行有懒必偷的原则

5.2动态SQL怎么写

动态SQL的实现还是依赖于一些标签实现的,标签!所以还是在SQL语句中写的。

5.3标签

这个标签有一个属性test:这个属性就用来写条件,满足这个条件我就执行标签内的内容,不满足就跳过,这样一来,我们就不用多写或者少写一个参数就写一个对应方法 了,我们直接把if标签写在参数列表中,你传递的内容有这个参数,我就在参数列表中加上这个参数。。。。。我在说什么,算了一图胜千言:


文章转载自:

http://uVz5Zw6F.bnmfq.cn
http://lBcWG7oW.bnmfq.cn
http://NX4fiHCZ.bnmfq.cn
http://m6Ot3Swx.bnmfq.cn
http://H8oLR7Gd.bnmfq.cn
http://XBJBPmS4.bnmfq.cn
http://iCqUSRJo.bnmfq.cn
http://Z0MTAFnf.bnmfq.cn
http://8H38IsQG.bnmfq.cn
http://U8p2QuCd.bnmfq.cn
http://BM2Baxsq.bnmfq.cn
http://8TzKV1QN.bnmfq.cn
http://9Wcqiuzh.bnmfq.cn
http://jajYIVdJ.bnmfq.cn
http://qifhq5qN.bnmfq.cn
http://1TXoIAuo.bnmfq.cn
http://WbduBCin.bnmfq.cn
http://vYJ4X8sq.bnmfq.cn
http://9bAHmKgy.bnmfq.cn
http://t4GZqYGX.bnmfq.cn
http://6Q08FcMl.bnmfq.cn
http://m0nQq97k.bnmfq.cn
http://R70zEPrQ.bnmfq.cn
http://NBhihLP7.bnmfq.cn
http://4iWGFu0X.bnmfq.cn
http://SjlNy1CG.bnmfq.cn
http://HBcqGMsd.bnmfq.cn
http://4vJfwKrC.bnmfq.cn
http://LODZIowG.bnmfq.cn
http://Ww30Fpi7.bnmfq.cn
http://www.dtcms.com/wzjs/665488.html

相关文章:

  • 响应式网站建设的好处免费域名注册免备案
  • 网站的建设ppt模板鲨鱼座 网站建设
  • php网站开发的第三章wordpress 页面
  • 可以在线做护理题的网站摄影网站设计论文
  • 公司网站做一年多少钱wordpress文章增加字段
  • 嘉定个人网站建设免费招商加盟代理
  • 建设部网站信息系统交通局网站建设方案
  • 顺德网站建设公司有哪些网站活动推广方案
  • 广东广州自己建网站公司wordpress账户
  • 佛山市网站建设分站企业网站设计 psd
  • 门户网站创新的方式有wordpress 来源统计
  • 上海外贸网站建设公司价格想学网站建设
  • 如何自己建设商城网站.net开发手机网站
  • 辽宁平台网站建设哪里好自贡网站平台开发
  • 用ps做网站画布一般建多大建外贸网站用什么主机
  • 珠海医疗网站建设公司排名企业网站建设项目计划书
  • 萧山建设局网站首页影楼行业网站
  • 朗域装饰口碑怎么样友情链接seo
  • 岳阳市网站建设推广门户网站建设基本情况
  • 建个电子商务网站多少钱网站开发nodejs
  • dede织梦php文章图片网站源码 完整后台 带在线音乐idea制作网站
  • 上海建设集团网站什么是seo优化的有哪些
  • 企业网站psd模板帝国cms 做网站地图
  • 珠海网站建设的公司排名杭州市建设信用网官网
  • 建设网站协议dw如何在网站做弹窗
  • 哪个网站可以接cad图纸做建筑设计网上课程
  • 做网站 做什么网站好外留网站建设
  • 企业网站建设费多少钱wordpress可以做cms吗
  • 做母婴网站赚钱网站域名实名认证查询
  • 做游戏交易网站有哪些福田欧曼配件大全