优秀的编程知识分享平台

网站首页 > 技术文章 正文

MyBatis之动态SQL篇(mybatis中的动态sql表现为)

nanyue 2024-10-16 11:08:57 技术文章 9 ℃

MyBatis之动态SQL讲解

mybatis

mysql

mybatis核心是对sql语句进行灵活操作,通过表达式进行判断,对sql进行灵活拼接、组装。对查询条件进行判断,如果输入参数不为空才进行查询条件拼接。

  • if标签

if

  • where标签

    if的配置也可以按照如下来写:

where

<where />可以自动处理第一个and。

  • foreach标签

向配置文件的sql传递数组或List,MyBatis使用foreach解析,如下:

如果我们需要传递多个id来查询多个用户的信息,可以使用foreach。SQL语句的写法如下:

sql查询

使用foreach如下(通过pojo传入list):

标签含义



list1

或者

list2

  • 传递单个List

    • 传递List类型在编写mapper.xml没有区别,唯一的区别是只有一个List参数时它的参数名为list。如下图:

单个list

  • 传递单个数组

单个数组

sql只接收一个数组参数,这时sql解析参数的名称mybatis固定为array,如果数组是通过一个pojo传递到sql则参数的名称为pojo中的属性名。

  • 传递单个简单数组类型

简单数组

如果数组的类型为简单类型则写为#{item},不用在通过ognl获取对象的属性值了。

  • SQL代码块

    • SQL中重复的SQL可以提取出来,调用时用include标签引用即可,最终达到SQL重复利用的目的,如下:

sql

如果有多个statement都使用相同的查询条件,那么就可以把查询条件抽取出来作为单独的SQL代码块。如下图:

sql 代码块

  • include的使用

include使用

解释

  • 基本的POJO类型 User.java

User.java

  • 自定义的POJO UserCustom

UserCustom.java

  • 视图POJO QueryVo.java

QueryVo.java

这样满足基本的需求,如果我们在查询中需要加入其它查询条件,只需要修改QueryVo,这样就可以实现较好的可扩展性。

最近发表
标签列表