mysql 动态sql缺失set_Mybatis if, set, where 动态sql和sql片段的使用

动态SQL

if

choose (when, otherwise)

trim (where, set)

foreach

数据表

CREATE TABLE `blog` (

`id` VARCHAR(50) NOT NULL COMMENT '博客id',

`title` VARCHAR(100) NOT NULL COMMENT '博客标题',

`author` VARCHAR(30) NOT NULL COMMENT '博客作者',

`create_time` DATETIME NOT NULL COMMENT '创建时间',

`views` INT(30) NOT NULL COMMENT '浏览量'

) ENGINE=INNODB CHARSET=utf8 COLLATE=utf8_general_ci;

实体类

public class Blog {

private String id;

private String title;

private String auther;

private java.util.Date createTime;

private int views;

}

开启驼峰命名自动映射

if

select * from blog where 1=1

and title = #{title}

trim (where, set)

trim

prefix:在包裹的代码块前面添加一个xxx

prefixOverrides:属性会忽略通过管道符分隔的文本序列(注意此例中的空格是必要的)

suffixOverrides: 忽略最后一个 xxx

## 等价于 where 标签

...

## 等价于 set 标签

...

where

若子句的开头为 “AND” 或 “OR”,where 元素也会将它们去除。

HashMap hashMap = new HashMap();

hashMap.put("title","java");

hashMap.put("author","自己");

select * from blog

title = #{title}

and author = #{author}

set

set 元素会动态地在行首插入 SET 关键字,并会删掉额外的逗号

update blog

title = #{title},

author = #{author},

where id = #{id}

choose (when, otherwise)

choose

类似 Java 中的 switch

HashMap hashMap = new HashMap();

hashMap.put("title","java");

// hashMap.put("author","自己");

hashMap.put("views", 1000);

select * from blog

title = #{title}

author = #{author}

views = #{views}

SQL片段

我们可以把一些功能抽取出来,方便复用

sql:抽取代码片段

include: 引用sql抽取的代码片段

title = #{title}

and author = #{author}

select * from blog

注意事项

最好基于单表来定义SQL片段

不要存在 where 标签

foreach

collection:遍历对象

item:每一项

index:索引

open:开头

separator:分隔符

close:结尾

int[] array = new int[]{10, 5000, 9999};

List list = new ArrayList<>();

for (int i : array) {

list.add(i);

}

select * from blog

views in

#{id}

d1d5fbb0030a

image

最新2020整理收集的一些高频面试题(都整理成文档),有很多干货,包含mysql,netty,spring,线程,spring cloud、jvm、源码、算法等详细讲解,也有详细的学习规划图,面试题整理等,需要获取这些内容的朋友请加Q君样:909038429

/./*欢迎加入java交流Q君样:909038429一起吹水聊天

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值