为了账号安全,请及时绑定邮箱和手机立即绑定

高效 MyBatis SQL 写法二

标签:
Java 数据库

高效 MyBatis SQL 写法二

前言

MyBatis 作为一款优秀的持久层框架,极大地简化了数据库操作。

然而,在实际开发中,XML 配置的编写仍然可能显得繁琐。

本文将分享一些 MyBatis 动态 SQL 的优质写法,帮助开发者提升效率并减少错误。

if + where 标签的组合

where 标签可以自动处理 ANDOR 的多余问题。

示例:


<select  id="getStudentList_whereIf"  resultMap="resultMap_studentEntity"  parameterType="StudentEntity">

SELECT * FROM STUDENT_TBL ST

<where>

<if  test="studentName != null">

ST.STUDENT_NAME LIKE CONCAT('%', #{studentName}, '%')

</if>

<if  test="studentSex != null">

AND ST.STUDENT_SEX = #{studentSex}

</if>

</where>

</select>

if + set 标签的更新操作

set 标签用于动态生成 UPDATE 语句中的 SET 部分。

示例:


<update  id="updateStudent_if_set"  parameterType="StudentEntity">

UPDATE STUDENT_TBL

<set>

<if  test="studentName != null">

STUDENT_NAME = #{studentName},

</if>

<if  test="studentSex != null">

STUDENT_SEX = #{studentSex},

</if>

</set>

WHERE STUDENT_ID = #{studentId}

</update>

trim 标签的灵活使用

trim 标签可以替代 whereset 标签,提供更灵活的 SQL 生成。

示例:


<select  id="getStudentList_if_trim"  resultMap="resultMap_studentEntity">

SELECT * FROM STUDENT_TBL ST

<trim  prefix="WHERE"  prefixOverrides="AND |OR ">

<if  test="studentName != null">

ST.STUDENT_NAME LIKE CONCAT('%', #{studentName}, '%')

</if>

<if  test="studentSex != null">

AND ST.STUDENT_SEX = #{studentSex}

</if>

</trim>

</select>

foreach 标签的批量操作

foreach 标签常用于 IN 条件中的批量操作。

示例:


<select  id="getStudentListByClassIds_foreach_array"  resultMap="resultMap_studentEntity">

SELECT * FROM STUDENT_TBL ST

WHERE ST.CLASS_ID IN

<foreach  collection="array"  item="classId"  open="("  separator=","  close=")">

#{classId}

</foreach>

</select>

SQL 片段的复用

通过 <sql> 标签定义可复用的 SQL 片段,提升代码的可读性和维护性。

示例:


<sql  id="studentColumns">

STUDENT_ID, STUDENT_NAME, STUDENT_SEX, STUDENT_BIRTHDAY

</sql>

  

<select  id="getStudentList"  resultMap="resultMap_studentEntity">

SELECT

<include  refid="studentColumns"/>

FROM STUDENT_TBL

</select>

总结

通过合理使用 MyBatis 的动态 SQL 标签,开发者可以显著提升代码的可读性和维护性,同时减少错误的发生。

本文介绍的几种常见用法,涵盖了从条件判断到批量操作的多种场景,希望能为你的开发工作带来帮助。

– 欢迎点赞、关注、转发、收藏【我码玄黄】,各大平台同名。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消