mybatis使用

Mabits标签的一些使用

1.select,delete,insert,update标签使用
属性介绍:

id:唯一的标示符

parameterType:传给此语句的全路径名或别名,parameterType有基本数据类型和复杂的数据类型配置。
基本数据类型,如输入参数只有一个,其数据类型可以是基本的数据类型,也可以是自己定的类类型。包括int,String,Integer,Date。

复杂数据类型:包含java实体类,map

resultType : 语句返回值类型或别名

图1

2.resultMap标签的使用

基本作用:建立SQL查询结果字段与实体属性的映射关系信息

查询的结果集转换为java对象,方便进一步操作,将结果集中的列与java对象中的属性对应起来并将值填充进去,与java队象对应的列不是数据库中表的列名,而是查询后结果集的列名。

SELECT ID, Name, AgeFROM TStudent
标签说明:
主标签
id:该resultMap的标志
type:返回值的类名,此例中返回EStudnet类
子标签:

id:用于设置主键字段与领域模型属性的映射关系,此处主键为ID,对应id。
result:用于设置普通字段与领域模型属性的映射关系

3.if标签的使用
if标签通常用于WHERE语句中,通过判断参数值来决定是否使用某个查询条件, 他也经常用于UPDATE语句中判断是否更新某一个字段,还可以在INSERT语句中用来判断是否插入某个字段的值
在这里插入图片描述

但是此时如果studentName是null或空字符串,此语句很可能报错或查询结果为空。此时我们使用if动态sql语句先进行判断,如果值为null或等于空字符串,我们就不进行此条件的判断。

修改为:
在这里插入图片描述
4.foreach标签的使用
foreach标签主要用于构建in条件,他可以在sql中对集合进行迭代。如下:

    delete from user where id in          #{id}      
我们假如说参数为---- int[] ids = {1,2,3,4,5} ----那么打印之后的SQL如下:

delete form user where id in (1,2,3,4,5)
释义:

collection :collection属性的值有三个分别是list、array、map三种,分别对应的参数类型为:List、数组、map集合,我在上面传的参数为数组,所以值为array

item : 表示在迭代过程中每一个元素的别名

index :表示在迭代过程中每次迭代到的位置(下标)

open :前缀

close :后缀

separator :分隔符,表示迭代时每个元素之间以什么分隔

我们通常可以将之用到批量删除、添加等操作中。

5.choose标签的使用
有时候我们并不想应用所有的条件,而只是想从多个选项中选择一个。MyBatis提供了choose 元素,按顺序判断when中的条件出否成立,如果有一个成立,则choose结束。当choose中所有when的条件都不满则时,则执行 otherwise中的sql。类似于Java 的switch 语句,choose为switch,when为case,otherwise则为default。
if是与(and)的关系,而choose是或(or)的关系。把所有可以限制的条件都写上,方面使用。选择条件顺序,when标签的从上到下的书写顺序:

在这里插入图片描述
1.where标签的使用

当if标签较多时,这样的组合可能会导致错误。例如,like姓名,等于指定性别等:

Xml代码
在这里插入图片描述
如果上面例子,参数studentName为null或’’,则或导致此sql组合成“WHERE AND”之类的关键字多余的错误SQL。
这时我们可以使用where动态语句来解决。这个“where”标签会知道如果它包含的标签中有返回值的话,它就插入一个‘where’。此外,如果标签返回的内容是以AND 或OR 开头的,则它会剔除掉。
上面例子修改为:

在这里插入图片描述
2.set标签的使用
当在update语句中使用if标签时,如果前面的if没有执行,则或导致逗号多余错误。使用set标签可以将动态的配置SET 关键字,和剔除追加到条件末尾的任何不相关的逗号。
没有使用if标签时,如果有一个参数为null,都会导致错误,如下示例:

在这里插入图片描述
使用set+if标签修改后,如果某项为null则不进行更新,而是保持数据库原值。如下示例:

UPDATE STUDENT_TBLSTUDENT_TBL.STUDENT_NAME = #{studentName},STUDENT_TBL.STUDENT_SEX = #{studentSex},STUDENT_TBL.STUDENT_BIRTHDAY = #{studentBirthday},STUDENT_TBL.CLASS_ID = #{classEntity.classID}WHERE STUDENT_TBL.STUDENT_ID = #{studentID};
3.trim标签的使用
trim是更灵活的去处多余关键字的标签,他可以实践where和set的效果。
where例子的等效trim语句:

SELECT * from STUDENT_TBL STST.STUDENT_NAME LIKE CONCAT(CONCAT('%', #{studentName}),'%')AND ST.STUDENT_SEX = #{studentSex}
set例子的等效trim语句:

UPDATE STUDENT_TBLSTUDENT_TBL.STUDENT_NAME = #{studentName},STUDENT_TBL.STUDENT_SEX = #{studentSex},STUDENT_TBL.STUDENT_BIRTHDAY = #{studentBirthday},STUDENT_TBL.CLASS_ID = #{classEntity.classID}WHERE STUDENT_TBL.STUDENT_ID = #{studentID};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值