MyBatis强大的动态Sql功能

1.动态不定增加

根据需求 , 动态的拼接SQL 。 用户有的信息是必须输入,但有的不是必须进行输入

比如在填写注册信息的时候,有时候密码是一定要填写的,而银行卡号不是必须填写的

1)注解方式

 测试类中 :

使用 if 标签 可以实现动态 SQL

2)XML方式

XML文件中:

测试类中: 

 2.查询

此处使用 XML 方式实现动态查询

需求一般是需要根据特定的字段显示特定的内容

比如网上商城手机,选择256G内存 + 16G运行内存 显示的就是16+256配置的手机。如果什么也不选,那么就显示出来所有的手机列表。

这样写也可以 , 但是会出现问题 , 比如如果只使用 age 作为查询字段,那么 SQL 语句会变成 :

可以看出来前面多了个 and

可以使用 trim 进行去除

但是使用 where 更好

如果查询条件都为空 , where 标签会自动去除where关键字

3.修改

mysql 中修改的格式为 :

update userinfo set a = ?,b= ?where c = ?

如果直接这样写,SQL 语句是这样的:

那么如何去除逗号, 可以使用 trim 标签

当然,推荐使用 set 标签

4.删除(批量)

注意 : for each 中 collection 参数的情况如下:

使用 id 进行批量删除

separator 是元素之间的分割

foreach 标签就是对应 in( ) 里面的内容

这里需要注意的就是

如果只有单个参数并且是 List , 那么collection 的 id 属性必须是list , 如果是其他 需要进行重命名

重命名的情况:

单元测试类中:

xml文件中: 

不重命名 , 那么 collection 所对应的值 需要改为 list 因为单元测试类中使用的是 List

如果使用的是 String[ ] 之类的,就需要使用 array

相关推荐

  1. MyBatis动态SQL

    2024-04-04 16:14:01       54 阅读
  2. MyBatis 之十:MyBatis 框架注解中动态 SQL

    2024-04-04 16:14:01       43 阅读
  3. MyBatisMybatis动态SQL——bind标签

    2024-04-04 16:14:01       24 阅读
  4. Mybatis 动态 SQL - foreach

    2024-04-04 16:14:01       55 阅读
  5. MyBatis动态Sql

    2024-04-04 16:14:01       59 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-04 16:14:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-04 16:14:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-04 16:14:01       87 阅读
  4. Python语言-面向对象

    2024-04-04 16:14:01       96 阅读

热门阅读

  1. Linux初学(十三)中间件

    2024-04-04 16:14:01       40 阅读
  2. var let 在 for 循环中的区别

    2024-04-04 16:14:01       39 阅读
  3. VMware虚拟机三种网络模式

    2024-04-04 16:14:01       36 阅读
  4. OBS在Linux下安装NDI插件手札

    2024-04-04 16:14:01       37 阅读
  5. Linux下docker运行python

    2024-04-04 16:14:01       44 阅读
  6. MySQL 表锁、行锁

    2024-04-04 16:14:01       40 阅读