技巧一:

  • 把查询的字段,查询的条件单独写在一起,使用 <sql></sql>标签定义,使用<include></include>标签引用
<!-- 查询的字段 -->
<sql id="Base_Column_List" >id, name
</sql><!-- 查询的条件 -->
<sql id="QUERY"><where><if test="id != null">AND id = #{id,jdbcType=INTEGER}</if><if test="name != null">AND name= #{name,jdbcType=VARCHAR}</if></where>
</sql><!-- 查询语句 -->
<select id="selectByCondition" resultMap="baseResultMap">select <!-- 引入查询的字段 --><include refid="Base_Column_List" />from student<!-- 引入查询的条件 --><include refid="QUERY"></include>
</select>

技巧二:

  • 大于小于号转义
<!-- 第一种方式:使用转义字符 -->
<if test="createTime != null"><!--   &gt; -> 大于号(>)   -->create_time &gt;= #{createTime ,jdbcType=DATE}</if><if test="updateTime != null"><!--   &lt; -> 小于号(<)   -->update_time &lt;= #{updateTime ,jdbcType=DATE}</if><!-- 第二种:xml格式 -->
<if test="createTime != null"><![CDATA[create_time >= #{createTime ,jdbcType=DATE}]]></if><if test="updateTime != null"><![CDATA[update_time <= #{updateTime ,jdbcType=DATE}]]></if>

技巧三:

  • 插入时返回自增的主键id
<!-- myBatis中关键点就是在 insert 标签内添加 useGeneratedKeys 和 keyProperty属性 --><!-- useGeneratedKeys:如果插入的表以自增列为主键,则允许 JDBC 支持自动生成主键,并可将自动生成的主键返回 --><!-- keyProperty:对应的主键的对象 --><insert id="insertSelective" parameterType="com.test.student" useGeneratedKeys="true" keyProperty="id"><!-- 这里写插入 sql -->
</insert><!-- java代码中关键点就是,返回的自增主键不是调用的 insertSelective 方法返回结果 --><!-- 返回结果为影响行数,正确的获取方式是在入参的 student 对象中,使用 getId() 方法得到 --><!-- 这只是举例,具体的对象和对象中的id属性的getter方法不一样 -->

技巧四:

  • 在插入前/插入后查询获取某个字段的值,并且使用在紧接着的第二条 sql 中
<!-- 场景描述:一个置顶功能,设置置顶的时候需要得到最大的置顶数,加一后设置为本次置顶数 --><!-- 在显示置顶的时候是按照倒序排列,越往后点击了置顶的数据显示的越前面 --><!-- 设置置顶 -->
<update id="updateTop"><!-- 更新前查询出最大的置顶数,并且加一后返回出来 --><!-- 注: --><!--    1. 更新前/更新后:BEFORE/AFTER --><!--    2. 这里是在有很多数据后添加的排序字段,添加排序字段后,老数据那一列都是null --><!--       则在此处使用了 COALESCE 函数做了一个小处理,如果为null就取值0 --><selectKey keyProperty="top_sort" order="BEFORE" resultType="java.lang.Integer">select COALESCE(max(top_sort),0) + 1 from table</selectKey><!-- 设置置顶主 sql --><!-- 注: --><!--    1. 下面 sql 中的 #{top_sort} 是取的上面 sql中的结果 -->update tabletop_sort = #{top_sort} <if test="update_time!=null">,update_time=#{update_time}</if><if test="update_user!=null">,update_user=#{update_user}</if>where id = #{id}
</update>

长期更新

希望能够帮助到你

over

myBatis中实用技巧相关推荐

  1. 数组反向遍历ios_iOS开发实用技巧—Objective-C中的各种遍历(迭代)方式

    iOS开发实用技巧-Objective-C中的各种遍历(迭代)方式 说明: 1)该文简短介绍在iOS开发中遍历字典.数组和集合的几种常见方式. 2)该文对应的代码可以在下面的地址获得:https:// ...

  2. find linux 目录深度_浪里淘沙,详解Linux系统中Find命令的实用技巧

    知了小巷:浪里淘沙,详解Linux系统中Find命令的实用技巧. 啊哈,找到了! 当我们需要在Linux系统上定位某个文件或目录时,find命令通常是必备之选. 它使用起来非常简单,但有许多不同的可选 ...

  3. mysql每一行数据类型_MySQL_MySQL编程中的6个实用技巧,每一行命令都是用分号(;)作为 - phpStudy...

    MySQL编程中的6个实用技巧 每一行命令都是用分号(;)作为结束 对于MySQL,第一件你必须牢记的是它的每一行命令都是用分号(;)作为结束的,但当一行MySQL被插入在PHP代码中时,最好把后面的 ...

  4. Windows XP系统中实用的命令及操作技巧

    Windows XP系统中实用的命令及操作技巧 转贴自:电脑报 想在命令提示符窗口中输入重复命令时,只须按F7键,就会出现图形界面,然后选择你想输入的命令即可. 一"符"安天下利用 ...

  5. 组合导航中的实用技巧-ZUPT+CUPT

    文章目录 组合导航中的实用技巧 实用更新1 - ZUPT 概念 操作过程 ZUPTs的优点 局限性 ZUPT如何提高惯导测量精度 两个因素影响 ZUPT的效果 ZUPT的重要性 总结 实用更新2 – ...

  6. 高端网站建设中多语言网站本地化的实用技巧

    企业会随着业务市场的不断扩大而发生与其他国家或地区合作的情况,对于企业来说这即是机遇也是挑战,想要获得成功的企业应该认真的思考这些问题.企业想要向国外市场发展自己的网站多语言化,并做到合理的本地化. ...

  7. Qt实用技巧:在Qt中获取屏幕的绝对坐标

    若该文为原创文章,未经允许不得转载 原博主博客地址::http://blog.csdn.net/qq21497936 原博主博客导航:http://blog.csdn.net/qq21497936/a ...

  8. MATLAB Appdesigner实用技巧(三):在App中实现示波器效果/动态波形效果

    1. MATLAB App显示动态波形 IMU901上传上来的数据中包含四元数和加速度,每帧数据包按如下格式向上位机发送: 0.00 0.00 0.00 0.00 0.00 0.00 0.00\r\n ...

  9. 浅谈VB6.0中的实用技巧

    浅谈VB6.0中的实用技巧 (一) VB6.0中文本框处理技巧 在Visual Basic中,文本框(TextBox)是最常用的控件,熟练运用文本框 是开发出高质量的应用程序的基础.笔者在从事应用程序 ...

最新文章

  1. Mysql备份与还原及优化方法
  2. 在实践中我遇到stompjs, websocket和nginx的问题与总结
  3. 向oracle中导入*.csv文件
  4. mastered skills
  5. 如何去maven仓库下载jar包
  6. QTP的那些事--调用外部的文件的方法
  7. PoolFormer解读
  8. 世界十大无法科学解释灵异事件(进来发表自己看发)
  9. REVERSE-PRACTICE-BUUCTF-21
  10. POJ 2253 Frogger (求某两点之间所有路径中最大边的最小值)
  11. yanobox nodes 3 Mac新一代点线粒子特效运动图形插件
  12. 小红书CTO山丘:用户隐私保护是数据应用的第一前提
  13. 微服务升级_SpringCloud Alibaba工作笔记0013---SpringCloud Alibaba简介
  14. 源码-0105-Autoresizing
  15. 大学计算机学五笔吗,新手学五笔打字
  16. 计算机office视频百度云,word视频教程百度云 office2016视频教程
  17. 3GP格式转换为AMV格式
  18. PCM格式音频数据的读取
  19. ZedGraph _WINFORM中设置ZEDGRAPH的曲线符号SYMBOL以及对应关系
  20. 场地测量的方法和程序_施工测量方案

热门文章

  1. python ogr_GDAL/OGR概述
  2. 通信原理实验 多径传播 MATLAB仿真
  3. 程序员常用的三款在线作图工具
  4. 机器学习——逻辑回归
  5. 喜欢士兵突击,我们都丢掉了,许三多没有丢
  6. 猴年快乐! 在UI设计中解密农历新年的象征意义
  7. 食品安全大数据可视化关联分析
  8. 关于SSL证书链的一些认识
  9. fortran与java的区别_fortran与c或java比较
  10. 【bzoj2121】字符串游戏 【动态规划dp】