您的位置:首页 > 房产 > 建筑 > 江门网站建设哪家快_网站或站点的第一个网页_seo排名赚钱_软文代发价格

江门网站建设哪家快_网站或站点的第一个网页_seo排名赚钱_软文代发价格

2025/2/24 8:01:40 来源:https://blog.csdn.net/qq_30333063/article/details/145463279  浏览:    关键词:江门网站建设哪家快_网站或站点的第一个网页_seo排名赚钱_软文代发价格
江门网站建设哪家快_网站或站点的第一个网页_seo排名赚钱_软文代发价格

高效 MyBatis SQL 写法一

前言

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

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

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

forEach 标签的使用

forEach 标签常用于循环遍历集合,生成动态 SQL

其核心属性包括:

  • item:集合中元素的别名。
  • index:集合中元素的索引。
  • collection:集合对象,必须指定。
  • open:循环开始时的符号,如 (
  • separator:元素间的分隔符,如 ,
  • close:循环结束时的符号,如 )

示例:

public List<Entity> queryById(List<String> userIds);

对应的 XML 配置:

<select id="queryById" resultMap="BaseResultMap">SELECT * FROM entityWHERE id IN<foreach collection="userIds" item="userId" index="index" open="(" separator="," close=")">#{userId}</foreach>
</select>

注意collection 属性的值取决于传入参数的类型。

如果传入的是 List,则值为 list;如果是数组,则为 array;如果是多个参数,则需封装为 Map

模糊查询与 concat 函数

模糊查询时,可以使用 concat 函数动态拼接 SQL 语句。

示例:

<select id="queryByName" resultMap="BaseResultMap" parameterType="Entity">SELECT * FROM entity<where><if test="name != null">name LIKE concat('%', #{name}, '%')</if></where>
</select>

choose 标签的多条件判断

choose 标签类似于 Java 中的 switch 语句,用于多条件判断。

示例:

<select id="getUserList_choose" resultMap="resultMap_user" parameterType="User">SELECT * FROM User u<where><choose><when test="username != null">u.username LIKE CONCAT('%', #{username}, '%')</when><when test="sex != null">AND u.sex = #{sex}</when><otherwise>AND u.status = 'ACTIVE'</otherwise></choose></where>
</select>

selectKey 标签的主键生成

在插入数据时,selectKey 标签可用于生成主键。

示例:

<insert id="createStudentAutoKey" parameterType="StudentEntity" keyProperty="studentId"><selectKey keyProperty="studentId" resultType="String" order="BEFORE">SELECT nextval('student')</selectKey>INSERT INTO STUDENT_TBL (student_id, student_name, student_sex, student_birthday)VALUES (#{studentId}, #{studentName}, #{studentSex}, #{studentBirthday})
</insert>

if 标签的动态条件

if 标签用于动态生成 SQL 条件。

示例:

<select id="getStudentList_if" 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>

总结

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

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

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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com