mybatis动态SQL语句
一 if标签SELECT * from STUDENT_TBL ST
WHERE ST.STUDENT_NAME LIKE CONCAT(CONCAT('%', #{studentName}),'%')
二 where标签
SELECT * from STUDENT_TBL ST
ST.STUDENT_NAME LIKE CONCAT(CONCAT('%', #{studentName}),'%')
AND ST.STUDENT_SEX = #{studentSex}
如果它包含的标签中有返回值的话就插入一个where。此外如果标签返回的内容是以AND或OR开头的,则它会剔除掉。
三 set 标签
使用set+if标签修改后,如果某项为null则不进行更新,而是保持数据库原值
UPDATE STUDENT_TBL
STUDENT_TBL.STUDENT_NAME = #{studentName},
STUDENT_TBL.STUDENT_SEX = #{studentSex},
STUDENT_TBL.STUDENT_BIRTHDAY = #{studentBirthday},
STUDENT_TBL.CLASS_ID = #{classEntity.classID}
WHERE STUDENT_TBL.STUDENT_ID = #{studentID};
四 trim标签
trim是更灵活的去处多余关键字的标签,他可以实践where和set的效果。
where例子的等效trim语句
SELECT * from STUDENT_TBL ST
ST.STUDENT_NAME LIKE CONCAT(CONCAT('%', #{studentName}),'%')
AND ST.STUDENT_SEX = #{studentSex}
set例子的等效trim语句
UPDATE STUDENT_TBL
STUDENT_TBL.STUDENT_NAME = #{studentName},
STUDENT_TBL.STUDENT_SEX = #{studentSex},
STUDENT_TBL.STUDENT_BIRTHDAY = #{studentBirthday},
STUDENT_TBL.CLASS_ID = #{classEntity.classID}
WHERE STUDENT_TBL.STUDENT_ID = #{studentID};
五 choose (when, otherwise)
有时候并不想应用所有的条件,而只是想从多个选项中选择一个。MyBatis提供了choose 元素,按顺序判断when中的条件出否成立,如果有一个成立,则choose结束。当choose中所有when的条件都不满则时,则执行otherwise中的sql。类似于Java 的switch语句,choose为switch,when为case,otherwise则为default。
SELECT * from STUDENT_TBL ST
ST.STUDENT_NAME LIKE CONCAT(CONCAT('%', #{studentName}),'%')
AND ST.STUDENT_SEX = #{studentSex}
AND ST.STUDENT_BIRTHDAY = #{studentBirthday}
AND ST.CLASS_ID = #{classEntity.classID}
六 foreach
对于动态SQL 非常必须的,主是要迭代一个集合,通常是用于IN 条件。List实例将使用“list”做为键,数组实例以“array”做为键。
1 参数为list实例的写法
SqlMapper.xml
SELECT * FROM STUDENT_TBL ST
WHERE ST.CLASS_ID IN
#{classList}
Java
List> classList.add("20000002");
classList.add("20000003");
List studentList = studentMapper.getStudentListByClassIDs(classList);
for(StudentEntity entityTemp : studentList){
System.out.println(entityTemp.toString());
}
2 参数为Array实例的写法
SqlMapper.xml
SELECT * FROM STUDENT_TBL ST
WHERE ST.CLASS_ID IN
#{ids}
Java
String[]> ids = "20000002";
ids = "20000003";
List studentList = studentMapper.getStudentListByClassIDs(ids);
for(StudentEntity entityTemp : studentList){
System.out.println(entityTemp.toString());
}
原帖地址:http://blog.csdn.net/ask_rent/article/details/6320326
页:
[1]