mysql动态检索_Mysql动态查询

if条件查询

格式: 添加到sql的语句

where标签

简化SQL语句中WHERE条件判断

智能处理and和or

如果使用几个if条件标签,如果第一个条件不成立,那么该sql语句就不成立了.

把所有的if条件语句加入到where标签内,则会根据if语句成立是否添加where条件,若标签返回的内容是以and或者or开头的,会自动剔除.

案例:

SELECT user.*,role.roleName

FROM smbms_user user

INNER JOIN smbms_role role ON user.userRole=role.id

AND   userName like CONCAT('%',#{userName},'%')

AND userRole=#{userRole}

trim标签

属性:

prefix:前缀 如果有返回值,在标签前加的语句

suffix:后缀 如果有返回值,在标签后加的语句

prefixOverrides:对于trim包含内容的首部进行指定内容的忽略

sufixOverrides:对于trim包含内容的尾部进行指定内容的忽略

可以去除多余的关键字(自定义)   where只能去除多余的and/or

SELECT user.*,role.roleName

FROM smbms_user user

INNER JOIN smbms_role role ON user.userRole=role.id

userName like CONCAT('%',#{userName},'%')

and userRole=#{userRole}

if+set进行修改(在实际开发中很少使用)

如何只对有值得参数进行修改,而不必每次都要获取整个对象.

案例:

UPDATE smbms_user

userCode=#{userCode},

userName=#{userName},

userPassword=#{userPassword},

gender=#{gender},

birthday=#{birthday},

phone=#{phone},

address=#{address},

modifyDate=#{modifyDate}

where id=#{id}

if+trim进行修改

添加条件判断修改

UPDATE smbms_user

userCode=#{userCode},

userName=#{userName},

userPassword=#{userPassword},

gender=#{gender},

birthday=#{birthday},

phone=#{phone},

address=#{address},

modifyDate=#{modifyDate}

where id=#{id}

使用foreach进行复杂查询

迭代一个集合,通常用于in条件

属性:

item:表示集合中每一个元素进行迭代时候的别名

index:指定一个名称,表示迭代过程中,每次迭代到的位置.(可省略...)

open:表示语句以什么开始 例:open=”(”

separator:表示每次进行迭代之间以什么作为分隔符.

close:表示该语句以什么结束.

collection:最关键并最容易出错的属性,该属性必须指定,不同情况下,该属性的值也不一样,主要分三种:

若传入的参数为单参数且参数类型是一个List的时候,collection属性值为list.

若入参为单参数且参数类型为数组的时候,collection属性值为array

若传入的参数为多参数,就需要把他们封装为一个Map处理,属性值为Map的key.

案例:使用foreach实现 全选 删除

DELETE FROM smbms_user WHERE id IN

#{userId}

#{userId}

#{userId}

choose(when,otherwise)

类似于java的switch --case语句,跟JSTL的choose使用方式一样.

when元素:当test属性中条件满足的时候.就会输出when元素的内容.跟java中switch一样,依次向下执行,当有一个when中的test条件成立后,执行该语句立马跳出choose,所以choose中只有一个条件会输出.

MyBatis分页

获取数据的页数

SELECT COUNT(`id`) AS pages FROM smbms_user

userRole=#{userRole};

注:if或when标签是针对JAVABEAN或者MAP的,进行判断的参数要么使用注解进行封装,或传入对象,或添加进map在进行传参数.

分页

SELECT user.*,role.roleName

FROM smbms_user user

INNER JOIN smbms_role role ON user.userRole=role.id

ORDER BY creationDate DESC LIMIT #{from},#{pageSize}

获取最后一条插入数据的id(自增主键)

49b5164942975007007b4fec9bc8d4ac.png

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值