MyBatis高频问题-动态sql
目录
动态SQL
源码解析
接上篇MyBatis高频问题-延迟加载与分页插件
动态SQL
什么是动态SQL?
SQL的内容是变化的,可以根据条件获取到不同的SQL语句主要是where部分发生变化。动态SQL的实现,使用的是MyBatis提供的标签
为什么使用动态SQL?
使用动态SQL可以解决某些功能的使用例如使用条件查询某个商品输入价格,地区等等进行筛选,如果使用静态SQL可能会查询出来的是一个空内容但使用动态SQL可以很好的解决这种问题
动态SQL的标签:
1、if标签中的test属性是必须的
2、if标签中test属性的值是false或者是true
3、如果为true,则if标签中的sql语句就会拼接。反之就不会拼接
4、test属性中可以使用的是:
当使用了@Param注解,那么test中要出现的是@Param注解指定的参数名。
当没有使用@Param注解,那么test中要出现的是:param1param2param3...
当使用了POJO,那么test中出现的是POJO类的属性名
5、在MyBatis的动态SQL中,不能使用&&,使用的是and
6、标签内与#{}内写的都是POJO属性名,其余是SQL的字段名
7、注意这里我在yml文件配置了MyBatis的自动驼峰命名规范,所以不用使用as重新命名
8、这个1=1是防止后面出现空传值导致SQL语句出现错误
源码解析
下一篇将对源码中各个阶段进行逐步解析:
MyBatis关键源码解析-CSDN博客