欢迎来到天天文库
浏览记录
ID:34724509
大小:52.64 KB
页数:8页
时间:2019-03-10
《mybatis的whereforeachset等标签详解》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、sql语句where条件中,需要一些安全判断,例如按性别检索,如果传入的参数是空的,此时查询出的结果很可能是空的,也许我们需要参数为空时,是查出全部的信息。这是我们可以使用动态sql,增加一个判断,当参数不符合要求的时候,我们可以不去判断此查询条件。 下文均采用mysql语法和函数(例如字符串链接函数CONCAT3.1if标签 一个很普通的查询:Xml代码 2、resultMap="studentResultMap"> SELECT*fromSTUDENT_TBLST WHEREST.STUDENT_NAMELIKECONCAT(CONCAT('%',#{studentName}),'%') 但是此时如果studentName是null或空字符串,此语句很可能报错或查询结果为空。此时我们使用if动态sql语句先进行判断,如果值为null或等于空字符串,我们就不进行此条件的判断。修改为:Xml代码 3、 SELECT*fromSTUDENT_TBLST WHEREST.STUDENT_NAMELIKECONCAT(CONCAT('%',#{studentName}),'%') 4、lect> 此时,当studentName的值为null或’’的时候,我们并不进行where条件的判断,所以当studentName值为null或’’值,不附带这个条件,所以查询结果是全部。 由于参数是Java的实体类,所以我们可以把所有条件都附加上,使用时比较灵活,new一个这样的实体类,我们需要限制那个条件,只需要附上相应的值就会where这个条件,相反不去赋值就可以不在where中判断。 代码中的where标签,请参考3.2.1.Xml代码 SELECT*fromSTUDENT_TBLST ST.STUDENT_NAMELIKECONCAT(CONCAT('%',#{stu6、dentName}),'%') ANDST.STUDENT_SEX=#{studentSex} ANDST.STUDENT_BIRTHDAY=#{studentBirthday} 7、 ANDST.CLASS_ID=#{classEntity.classID} 查询,姓名中有‘李’,男,生日在‘1985-05-28’,班级在‘20000002’的学生。Java代码 StudentEntityentity=newStudentEntity(8、); entity.setStudentName("李"); entity.setStudentSex("男"); entity.setStudentBirthday(StringUtil.parse("1985-0
2、resultMap="studentResultMap"> SELECT*fromSTUDENT_TBLST WHEREST.STUDENT_NAMELIKECONCAT(CONCAT('%',#{studentName}),'%') 但是此时如果studentName是null或空字符串,此语句很可能报错或查询结果为空。此时我们使用if动态sql语句先进行判断,如果值为null或等于空字符串,我们就不进行此条件的判断。修改为:Xml代码
3、 SELECT*fromSTUDENT_TBLST WHEREST.STUDENT_NAMELIKECONCAT(CONCAT('%',#{studentName}),'%') 4、lect> 此时,当studentName的值为null或’’的时候,我们并不进行where条件的判断,所以当studentName值为null或’’值,不附带这个条件,所以查询结果是全部。 由于参数是Java的实体类,所以我们可以把所有条件都附加上,使用时比较灵活,new一个这样的实体类,我们需要限制那个条件,只需要附上相应的值就会where这个条件,相反不去赋值就可以不在where中判断。 代码中的where标签,请参考3.2.1.Xml代码 SELECT*fromSTUDENT_TBLST ST.STUDENT_NAMELIKECONCAT(CONCAT('%',#{stu6、dentName}),'%') ANDST.STUDENT_SEX=#{studentSex} ANDST.STUDENT_BIRTHDAY=#{studentBirthday} 7、 ANDST.CLASS_ID=#{classEntity.classID} 查询,姓名中有‘李’,男,生日在‘1985-05-28’,班级在‘20000002’的学生。Java代码 StudentEntityentity=newStudentEntity(8、); entity.setStudentName("李"); entity.setStudentSex("男"); entity.setStudentBirthday(StringUtil.parse("1985-0
4、lect> 此时,当studentName的值为null或’’的时候,我们并不进行where条件的判断,所以当studentName值为null或’’值,不附带这个条件,所以查询结果是全部。 由于参数是Java的实体类,所以我们可以把所有条件都附加上,使用时比较灵活,new一个这样的实体类,我们需要限制那个条件,只需要附上相应的值就会where这个条件,相反不去赋值就可以不在where中判断。 代码中的where标签,请参考3.2.1.Xml代码 SELECT*fromSTUDENT_TBLST ST.STUDENT_NAMELIKECONCAT(CONCAT('%',#{stu
6、dentName}),'%') ANDST.STUDENT_SEX=#{studentSex} ANDST.STUDENT_BIRTHDAY=#{studentBirthday}
7、 ANDST.CLASS_ID=#{classEntity.classID} 查询,姓名中有‘李’,男,生日在‘1985-05-28’,班级在‘20000002’的学生。Java代码 StudentEntityentity=newStudentEntity(
8、); entity.setStudentName("李"); entity.setStudentSex("男"); entity.setStudentBirthday(StringUtil.parse("1985-0
此文档下载收益归作者所有