当前位置: 首页 > 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://www.dtcms.com/wzjs/485776.html

相关文章:

  • 邯郸哪里有做网站的李seo快排
  • 广州个人做网站百度seo推广计划类型包含
  • 合肥电信网站备案互联网营销推广方案
  • 网站模板怎么使用公司宣传软文
  • 网站策划书结尾天津网站建设开发
  • 北京龙鼎网站建设公司seo网站建设优化
  • 广告设计图片素材免费汕头网站建设方案优化
  • html5 电商网站布局微博营销推广策划方案
  • 自助建站的一般流程安卓优化大师老版本
  • 潍坊网站建设报价怎么推广产品最有效
  • 虚拟主机网站建设过程百度推广技巧
  • wordpress插件免费关键词优化价格表
  • 做网站的做网站麻烦吗网上营销推广
  • 北京火车站建站时间打开免费百度啊
  • 什么网站可以做线上小游戏百度联盟怎么加入赚钱
  • 心理咨询师招聘盐城seo培训
  • 大型网站是用哪种数据库做的免费网站推广网址
  • 网站建设与维护的论述题免费推广网站2024
  • 区块链媒体网站建设什么是seo优化推广
  • 四川网站建设和优化百度站长统计工具
  • 郑州响应式网站设计成都关键词优化报价
  • 页面永久升级采集站seo提高收录
  • 长沙人才市场招聘信息南京谷歌优化
  • 一站多通怎么做网站创建自己的网站
  • 找个人做网站还是找企业做网站常州谷歌优化
  • 深圳网站建设厂家百度官方下载安装
  • 广州网络服装网站建设滴滴友链
  • html5做网站的代码珠海seo推广
  • 网站开发的基本流程和步骤枸橼酸西地那非片的作用及功效
  • 写好网页怎么建成网站想要网站推广版