详解mybatis的动态sql

一 我们来看一下下图的一个页面文本框.

详解mybatis的动态sql

我们来分析一下这个页面,在实际项目中,通过我们查询条件展现出查询内容

详解mybatis的动态sql

一共有多少情况? 排列组合数学的算法自己算一下吧,所以我们不可能把每种情况的sql都写出来.
详解mybatis的动态sql

String sql = “select * from tbl where 1=1”;
if(name !=null){
sql+=“and name like ?”;
}
if(gender !=null){
sql+=“and gender=?”
}

以前都是这种拼接字符串…就是这样解决了拼接,但是如果大大量的拼接,如果出问题了还是很麻烦.
现在mybatis有动态sql机制where标签帮我们解决了这个问题.
先看一下数据库目前的数据
详解mybatis的动态sql

首先传一个实体类,没有设置类中属性值.
详解mybatis的动态sql
详解mybatis的动态sql
详解mybatis的动态sql

详解mybatis的动态sql
我们这里它不符合条件,就走不走where条件了. 直接就是select * from tbl_student

==================================================================
我们来设置name属性,然后测试.mapper文件不变.
详解mybatis的动态sql
详解mybatis的动态sql
在测试name和address都有值的情况 mapper文件配置不变.
详解mybatis的动态sql
详解mybatis的动态sql
在测试只有address值的时候
详解mybatis的动态sql
详解mybatis的动态sql
我直接把第一个条件加上and的时候也不影响.
详解mybatis的动态sql
详解mybatis的动态sql
详解mybatis的动态sql
总结:
详解mybatis的动态sql

动态sql foreach标签.

当我们想在数据库查询多个相同的字段条件时.
详解mybatis的动态sql
详解mybatis的动态sql
详解mybatis的动态sql
详解mybatis的动态sql
详解mybatis的动态sql
详解mybatis的动态sql
详解mybatis的动态sql

测试sql片段 ,一般用的不多.

详解mybatis的动态sql
详解mybatis的动态sql
详解mybatis的动态sql
include:
英 [ɪnˈkluːd] v.包括;包含;使成为…的一部分
详解mybatis的动态sql
详解mybatis的动态sql