第一范文网 - 专业文章范例文档资料分享平台

动态SQL语句--Mysql--Mybaits

来源:用户分享 时间:2025/6/28 20:58:00 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

动态SQL语句 有些时候,sql语句where条件中,需要一些安全判断,例如按性别检索,如果传入的参数是空的,此时查询出的结果很可能是空的,也许我们需要参数为空时,是查出全部的信息。这是我们可以使用动态sql,增加一个判断,当参数不符合要求的时候,我们可以不去判断此查询条件。 下文均采用mysql语法和函数(例如字符串链接函数CONCAT)。 源代码http://limingnihao.javaeye.com/admin/blogs/782190页面最下面; 1 if标签 一个很普通的查询: Xml代码 1. 2. 但是此时如果studentName是null或空字符串,此语句很可能报错或查询结果为空。此时我们使用if动态sql语句先进行判断,如果值为null或等于空字符串,我们就不进行此条件的判断。 修改为: Xml代码 1. 2. 此时,当studentName的值为null或??的时候,我们并不进行where条件的判断,所以当studentName值为null或??值,不附带这个条件,所以查询结果是全部。

由于参数是Java的实体类,所以我们可以把所有条件都附加上,使用时比较灵活, new一个这样的实体类,我们需要限制那个条件,只需要附上相应的值就会where这个条件,相反不去赋值就可以不在where中判断。

代码中的where标签,请参考3.2.1. Xml代码 1. 2. 查询,姓名中有?李?,男,生日在?1985-05-28?,班级在?20000002?的学生。 Java代码 1. StudentEntity entity = new StudentEntity(); 2. entity.setStudentName(\李\); 3. entity.setStudentSex(\男\); 4. entity.setStudentBirthday(StringUtil.parse(\)); 5. entity.setClassEntity(classMapper.getClassByID(\)); 6. List studentList = studentMapper.getStudentListWhereEntity(entity); 7. for( StudentEntity entityTemp : studentList){ 8. System.out.println(entityTemp.toString()); 9. } 2 where、set、trim标签 2.1 where 当if标签较多时,这样的组合可能会导致错误。例如,like姓名,等于指定性别等: Xml代码 1. 2. 如果上面例子,参数studentName为null或??,则或导致此sql组合成“WHERE AND”之类的关键字多余的错误SQL。 这时我们可以使用where动态语句来解决。这个“where”标签会知道如果它包含的标签中有返回值的话,它就插入一个?where?。此外,如果标签返回的内容是以AND 或OR 开头的,则它会剔除掉。 上面例子修改为: Xml代码 1. 2. 2.2 set 当在update语句中使用if标签时,如果前面的if没有执行,则或导致逗号多余错误。使用set标签可以将动态的配置SET 关键字,和剔除追加到条件末尾的任何不相关的逗号。 没有使用if标签时,如果有一个参数为null,都会导致错误,如下示例: Xml代码 1. 2. 3. UPDATE STUDENT_TBL 4. SET STUDENT_TBL.STUDENT_NAME = #{studentName}, 5. STUDENT_TBL.STUDENT_SEX = #{studentSex}, 6. STUDENT_TBL.STUDENT_BIRTHDAY = #{studentBirthday}, 7. STUDENT_TBL.CLASS_ID = #{classEntity.classID} 8. WHERE STUDENT_TBL.STUDENT_ID = #{studentID}; 9. 使用set+if标签修改后,如果某项为null则不进行更新,而是保持数据库原值。如下示例: Xml代码 1. 2. 3. UPDATE STUDENT_TBL 4. 5. 6. STUDENT_TBL.STUDENT_NAME = #{studentName}, 7. 8. 9. STUDENT_TBL.STUDENT_SEX = #{studentSex}, 10. 11. 12. STUDENT_TBL.STUDENT_BIRTHDAY = #{studentBirthday}, 13. 14. 15. STUDENT_TBL.CLASS_ID = #{classEntity.classID} 16. 17. 18. WHERE STUDENT_TBL.STUDENT_ID = #{studentID}; 19. 2.3 trim

搜索更多关于: 动态SQL语句--Mysql--Mybaits 的文档
动态SQL语句--Mysql--Mybaits.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c6sqj35imma05ej21u7z8_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top