重庆服装网站建设地址,网站建设的网站分析怎么写,英语卷子哪个网站可以做,石家庄live公众号系列文章目录
1、mybatis简介及数据库连接池 2、mybatis中selectOne的使用 3、mybatis简单使用 4、mybatis中resultMap结果集的使用 Mybatis实用教程之XML实现动态sql 系列文章目录前言1. 动态条件查询2. 动态更新语句3. 动态插入语句4、其他标签的使用 前言 当编写 MyBatis 中…系列文章目录
1、mybatis简介及数据库连接池 2、mybatis中selectOne的使用 3、mybatis简单使用 4、mybatis中resultMap结果集的使用 Mybatis实用教程之XML实现动态sql 系列文章目录前言1. 动态条件查询2. 动态更新语句3. 动态插入语句4、其他标签的使用 前言 当编写 MyBatis 中复杂动态 SQL 语句时使用 XML 格式是一种非常灵活的方式。这样做可以根据不同条件动态生成 SQL 查询更新或删除语句。以下是一篇简要的教程详细介绍如何使用 MyBatis XML 来编写动态 SQL。
1. 动态条件查询
假设有一个 User 实体有 id、username 和 email 字段我们希望根据不同条件查询用户信息。
!-- 在 Mapper XML 文件中编写动态 SQL 查询 --
select idselectUsers resultTypeUserSELECT * FROM userswhereif testid ! nullAND id #{id}/ifif testusername ! null and username ! AND username #{username}/ifif testemail ! null and email ! AND email #{email}/if/where
/selectwhere 标签用于将动态生成的条件组合到 WHERE 子句中。if 标签根据条件的存在与否来动态生成查询条件。
上面的方法可以根据id、username、email进行条件查询当test后面的语句为true的时候会将if标签内的语句拼接。
2. 动态更新语句
假设我们想根据不同的条件更新用户信息。
!-- 在 Mapper XML 文件中编写动态 SQL 更新 --
update idupdateUser parameterTypeUserUPDATE userssetif testusername ! nullusername #{username},/ifif testemail ! nullemail #{email},/if/setWHERE id #{id}
/updateset 标签用于指定要更新的字段。if 标签根据条件动态设置要更新的字段。
3. 动态插入语句
如果要根据不同情况插入不同的字段也可以使用动态 SQL。
!-- 在 Mapper XML 文件中编写动态 SQL 插入 --
insert idinsertUser parameterTypeUserINSERT INTO userstrim prefix( suffix) suffixOverrides,if testid ! nullid,/ifif testusername ! null and username ! username,/ifif testemail ! null and email ! email,/if/trimtrim prefixVALUES ( suffix) suffixOverrides,if testid ! null#{id},/ifif testusername ! null and username ! #{username},/ifif testemail ! null and email ! #{email},/if/trim
/inserttrim 标签用于动态设置插入的字段和对应的值当trim标签内的内容为空时不会添加前缀。prefix 和 suffix 属性用于指定插入语句的前缀和后缀。suffixOverrides 属性用于去除最后一个不必要的逗号。
4、其他标签的使用
基础的语法使用如下所示。choose、when、otherwise 有点像if-else if -else的感觉
!-- 使用 choose、when、otherwise 标签实现条件选择 --
select idgetUserByIdOrUsername resultTypeUserSELECT * FROM userswherechoosewhen testid ! nullAND id #{id}/whenwhen testusername ! null and username ! AND username #{username}/whenotherwiseAND 11/otherwise/choose/where
/select!-- 使用 foreach 标签进行遍历操作 --
select idgetUsersByIdList resultTypeUserSELECT * FROM usersWHERE id INforeach collectionids itemid open( separator, close)#{id}/foreach
/select