场景介绍
如果只是简单的CRUD, 可能只是需要一个parameterType就可以了, 当然这个接收参数可以是是自定义类型, 也可以是基本数据类型. 可是当传入的参数个数不确定, 或者根据传入的参数是否有值来决定生成什么样的sql语句, 就需要用到mybatis的动态SQL功能了.
项目中用到的xml
mybatis映射表
mybatis配置表
项目中用到的java类
接口
User类
项目中用到的数据库表
动态SQL - if标签
当我们使用普通的select标签进行sql语句查询时, 如果where后面的某个条件为空, 那么造成的后果可能就是查询不到任何结果
mybatis中xml的配置
调试代码
生成的sql语句和对应的参数
执行的结果
空
预期结果
我们预期是当我们传入的参数有值时, 都会将该条件拼接到where语句后面, 如果没有值, 则不拼接
使用标签来完成这个功能
使用标签后生成的sql语句和参数
当使用标签后, 如果有空的参数, 则不会将该参数生成到sql语句中
使用标签后的结果
[User]
动态SQL - foreach标签
当我们使用in语句要查询多条数据时, 可能需要传入一个集合当作参数, 这里我们需要用到标签
mybatis中xml的配置
调试代码
生成的sql语句和参数
执行结果
当前users表中只没有id为3的数据, 因此只查询出来两条
[User, User]
SQL抽取 - sql标签
SQL引入 - include标签
领取专属 10元无门槛券
私享最新 技术干货