电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

MyBatis 实现MySQL的动态 SQL 写法

14页
  • 卖家[上传人]:知***
  • 文档编号:597195863
  • 上传时间:2025-01-20
  • 文档格式:DOCX
  • 文档大小:135.02KB
  • / 14 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、MyBatis 实现MySQL的动态 SQL 写法1.Mybatis 动态 sql 是做什么的?Mybatis 动态 sql 可以让我们在 Xml 映射文件内,以标签的形式编写动态 sql,完成逻辑判断和动态拼接 sql 的功能。2.Mybatis 的 9 种 动 态 sql 标 签有哪些?3.动态 sql 的执行原理?原理为:使用 OGNL 从 sql 参数对象中计算表达式的值,根据表达式的值动态拼接 sql,以此来完成动态 sql 的功能。MyBatis标签1.if标签:条件判断MyBatis if 类似于 Java 中的 if 语句,是 MyBatis 中最常用的判断语句。使用 if 标签可以节省许多拼接 SQL 的工作,把精力集中在 XML 的维护上。1)不使用动态sqlif 语句使用方法简单,常常与 test 属性联合使用。语法如下:SQL语句2)使用动态sql上面的查询语句,我们可以发现,如果#username为空,那么查询结果也是空,如何解决这个问题呢?使用 if 来判断,可多个 if 语句同时使用。以下语句表示为可以按照网站名称(name)或者网址(url)进行模糊查询

      2、。如果您不输入名称或网址,则返回所有的网站记录。但是,如果你传递了任意一个参数,它就会返回与给定参数相匹配的记录。2.where+if标签where、if同时使用可以进行查询、模糊查询注意,失败后,关键字只会去掉库表字段赋值前面的and,不会去掉语句后面的and关键字,即注意,只会去掉语句中的最开始的and关键字。所以下面的形式是不可取的这个“where”标签会知道如果它包含的标签中有返回值的话,它就插入一个where。此外,如果标签返回的内容是以AND 或OR 开头的,则它会剔除掉。3.set标签set可以用来修改4.choose(when,otherwise) 语句有时候,我们不想用到所有的查询条件,只想选择其中的一个,查询条件有一个满足即可,使用 choose 标签可以解决此类问题,类似于 Java 的 switch 语句也就是说,这里我们有三个条件,id、username、sex,只能选择一个作为查询条件 如果 id 不为空,那么查询语句为:select * from user where id=? 如果 id 为空,那么看username 是否为空,如果不为空,那么语句为se

      3、lect * from user where username=?; 如果 username 为空,那么查询语句为select * from user where sex=?5.trimtrim标记是一个格式化的标记,可以完成set或者是where标记的功能、用 trim 改写上面第二点的 if+where 语句 prefix:前缀 prefixoverride:去掉第一个and或者是or、用 trim 改写上面第三点的 if+set 语句 suffix:后缀 suffixoverride:去掉最后一个逗号(也可以是其他的标记,就像是上面前缀中的and一样)、trim+if同时使用可以添加6.MyBatis foreach标签foreach是用来对集合的遍历,这个和Java中的功能很类似。通常处理SQL中的in语句。foreach 元素的功能非常强大,它允许你指定一个集合,声明可以在元素体内使用的集合项(item)和索引(index)变量。它也允许你指定开头与结尾的字符串以及集合项迭代之间的分隔符。这个元素也不会错误地添加多余的分隔符你可以将任何可迭代对象(如 List、Set 等)、

      4、Map 对象或者数组对象作为集合参数传递给 foreach。当使用可迭代对象或者数组时,index 是当前迭代的序号,item 的值是本次迭代获取到的元素。当使用 Map 对象(或者 Map.Entry 对象的集合)时,index 是键,item 是值。整合案例xmlselect*fromstudentWHERE1=1ANDsidlike#sidsacclikeconcat(%#sacc%)ANDsnamelikeconcat(%#sname%)ANDsex=#sexANDphone=#phoneupdatestudentsname=#sname,spwd=#spwd,sex=#sex,phone=#phonesid=#sidwheresid=#sidinsertintostudentsname,spwd,sex,phone,#sname,#spwd,#sex,#phoneWHEREsidin#idsdeletefromstudentwheresidin#ids测试类:packagecom.sea.test;importcom.sea.entity.Student;importcom.sea.mapper.StuMapper;importorg.apache.ibatis.io.Resources;importorg.apache.ibatis.session.SqlSession;importorg.apache.ibatis.session.SqlSessionFactory;importorg.apache.ibatis.session.SqlSessionFactoryBuilder;importorg.junit.After;importorg.junit.Before;importorg.junit.Test;importjava.io.IOException;importjava.io.InputStream;importjava.util.List;publicclassStuTest

      《MyBatis 实现MySQL的动态 SQL 写法》由会员知***分享,可在线阅读,更多相关《MyBatis 实现MySQL的动态 SQL 写法》请在金锄头文库上搜索。

      点击阅读更多内容
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.