动态sql是指sql语句可动态的变化
/**
* 通过条件查询员工信息【条件不确定】
private Integer id; //员工id
private String lastName; //员工姓名
private String email; //员工邮箱
private Double salary; //员工薪资
Employee对象中属性不为空,就添加到查询条件中
id not null->sql: select id,last_name,email,salary from tbl_employee where id=#{id}
lastName not null -> sql select id,last_name,email,salary from tbl_employee where last_name=#{lastName}
*/
public List<Employee> selectEmpByDynamicOpr(Employee employee);
myabtis不支持方法的重载
-
因为:Mybatis规定方法名与SQL的Id一致【SQL的Id不能重复】导致了方法不能重载
-
Mybatis映射文件中注释
-
推荐使用:<!-- -->
-
不推荐使用:--
-
-
动态数据:使用Thymeleaf动态渲染html【静态页面】
-
Mybatis动态SQL中支持:OGNL
-
OGNL( Object Graph Navigation Language )对象图导航语言,这是一种强大的
表达式语言,通过它可以非常方便的来操作对象属性。 类似于我们的EL,SpEL等
-
动态sql标签
- if标签:主要用于基本的if判断
- where标签 :解决where关键字以及出现的第一个and或者or关键字导致sql语句错误
-
trim标签:可以在条件判断完的SQL语句前后添加或者去掉指定的字符
-
prefix: 添加前缀
-
prefixOverrides: 去掉前缀
-
suffix: 添加后缀
-
suffixOverrides: 去掉后缀
-
- choose标签:主要用于分支判断 单条件 类似于java中的if-else 或者 Switch-case 只会满足所有分支中的一个
- set标签:去除修改语句中的{,}逗号的问题
- foreach标签:类似于java中的增强for循环
- collection: 要迭代的集合
- item: 当前从集合中迭代出的元素
- open: 开始字符
-
index