MyBatis总结七:动态sql和sql片段
开发中,sql拼接很常见,所以说一下动态sql:
1 | if |
2 | chose,when,otherwise |
3 | where,set |
4 | foreach |
用法解析(现有一张users表 内有id username age 三个字段):
<!--查询所有用户,传递参数type,如果值为0,按照年龄升序排序,如果为1则按照年龄降序排序,否则按照ID排序--><!--choose when otherwise的用法 大致相当于case when default--><select id="getUserListByType" resultType="User">select * from users<choose><when test="type==0">order by age asc</when><when test="type==1">order by age desc</when><otherwise>order by id asc</otherwise></choose></select><!--根据多个id查询用户 if where foreach的用法--><select id="getUserListByIds" resultMap="User">select * from users<where>-- if判断 如果传进去的参数ids不为空<if test="ids!=null and ids==''">and id in-- foreach循环ids 以逗号为分隔符 以ids这个字符串中的'('为开始 ')'为结果<foreach collection="ids" item="id" open="(" close=")" separator=",">#{id}</foreach></if></where></select><!--修改用户信息,如果某字段为null,则不修改这个字段 set的用法--><select id="updateUser">update users<set><if test="username!=null and username!=''">username = #{username}</if><if test="age!=null">age = #{age}</if></set></select>
我们还可以把重复的sql抽取出来,作为公用的sql片段:
定义sql片段:
<!-- sql片段 建议:对单表进行sql片段的抽取,方便重用抽取时不包含where--><sql id="findUserSql"><if test="userCustomer!=null"><if test="userCustomer.age!=null">and user.age=#{userCustomer.age}</if><if test="userCustomer.username!=null and userCustomer.username!=''">and user.username like '$%{userCustomer.username}%'</if></if></sql>
使用sql片段:
<!-- 动态sql --><select id="findUserCount" parameterType="com.zy.domain.User" resultType="int">select count(*) from users-- where 可自动去除条件中的第一个and<where><include refid="findUserSql"></include></where></select>
转载于:https://www.cnblogs.com/blazeZzz/p/9296718.html
MyBatis总结七:动态sql和sql片段相关推荐
- 6.Mybatis中的动态Sql和Sql片段(Mybatis的一个核心)
视频地址:http://edu.51cto.com/sd/be679 动态Sql是Mybatis的核心,就是对我们的sql语句进行灵活的操作,他可以通过表达式,对sql语句进行判断,然后对其进行灵活的 ...
- Mybatis入门之动态sql
Mybatis入门之动态sql 通过mybatis提供的各种标签方法实现动态拼接sql. 1.if.where.sql.include标签(条件.sql片段) <sql id="sel ...
- 动态SQL及SQL片段、_parameter、#{}和${}的区别
4. 动态SQL及SQL片段 4.1 if <if test="条件">拼接的sql</if> Mybatis中的if标签用于拼接sql.例如: <s ...
- Java - MyBatis中的动态SQL是什么意思?
分享一个大牛的人工智能教程.零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net 对于一些复杂的查询,我们可能会指定多个查询条件,但是 ...
- Mybatis映射文件动态SQL语句-01
因为在很多业务逻辑复杂的项目中,往往不是简单的sql语句就能查询出来自己想要的数据,所有mybatis引入了动态sql语句, UserMapper.xml <?xml version=" ...
- mybatis注解开发动态sql
mybatis注解开发动态sql 本篇来讲一下如何使用mybatis注解模式中的动态sql 先来讲一下什么是动态sql 在我们实际开发的时候可能会出现很多方法需要一条很相似的sql语句来进行增删改查, ...
- Mybatis学习之动态Sql
目录 1. 什么是动态Sql 2. 动态Sql需要学习什么 3. 动态Sql之<if> 4. 动态Sql之<where> 5. 动态Sql之<foreach> 6. ...
- Mybatis 注解开发 + 动态SQL
Hello 大家好我是橙子同学,今天分享注解Mybatis注解开发+动态sql 目录 每文一铺垫(今天有小插曲哦) 注解开发 添加 @Insert 删除 @Delete 查询 @Select 修改 @ ...
- Java获取Mybatis动态生成的sql
前提:已经编写好相应的接口个xml文件 public void exportExcel_bw() throws Exception {//封装sql需要查询的sql的条件Map<String, ...
最新文章
- spring-redis-data的一个坑
- 小米输掉官司,倒打一耙不如坦然认错
- 想知道自己能不能长命百岁?窝个粑粑测个菌?
- 使用links方式安装eclipse插件
- tensorboardX笔记:理解graph
- 灾备理论-可靠的异地灾备
- Timus1430(裴蜀定理应用)
- JavaScript实现单词首字母大写的方法集锦
- pandas: DataFrame在数据处理时一些常用的操作汇总
- 常见的js算法面试题收集,es6实现
- 3dmax体积雾渲染不出来_corona渲染,非常实用的小技巧
- 53 SD配置-定价配置-定义条件排斥组
- Dumpsys Input Diagnostics
- 平均数和均值一样吗_求平均数!
- matpower在matlab里面吗,matpower matlab 238万源代码下载- www.pudn.com
- 利用Python处理Excel数据
- linux dstat,使用Dstat来进行Linux综合性能诊断
- 聊聊实际使用的电源转化电路,分享一些不同场合下的转3.3V电路
- 光模块调式总结(SFP)
- 使用icepdf将pdf转换为图片时出现乱码的问题
热门文章
- lambda中使用filter过滤
- java getabsolutepath,详谈java中File类getPath()、getAbsolutePath()、getCanonical的区别
- 电脑技巧:Windows服务器挂载磁盘方法介绍
- SQL数据库面试题以及答案!
- Asp.Net Core + Docker 搭建
- 挂起某线程命令 Linux,linux 线程挂起恢复的简单示例
- NOT运算符与运算符
- 用户体验与可用性测试_可用性作为用户体验的原则
- layui选项卡嵌套选项卡_在ProtoPie中使用嵌套组件构建选项卡栏
- 使用jenkins进行项目的自动构建部署