MyBatis通用的10种写法总结大全

MyBatis通用的10种写法总结大全

1. 基础查询

  • 示例1:

xml
<select id="selectById" resultType="com.example.model.User">
select * from user where id = #{id}
</select>

  • 示例2:

xml
<select id="findUserByName" resultType="com.example.model.User">
select * from user where name like concat('%',#{name},'%')
</select>

2. 动态SQL

  • 示例1:

xml
<select id="findUserByCondition" resultType="com.example.model.User">
select * from user
<where>
<if test="id != null"> and id = #{id} </if>
<if test="name != null"> and name = #{name} </if>
</where>
</select>

  • 示例2:

xml
<update id="updateUser" parameterType="com.example.model.User">
update user
<set>
<if test="name != null"> name = #{name},</if>
<if test="age != null"> age = #{age},</if>
</set>
where id = #{id}
</update>

3. 分页查询

  • 示例1:

xml
<select id="getPageData" resultType="com.example.model.User">
select * from user
limit #{startIndex}, #{pageSize}
</select>

  • 示例2:

xml
<select id="getPageDataByCondition" resultType="com.example.model.User">
select * from user
<where>
<if test="name != null"> and name like concat('%',#{name},'%') </if>
</where>
limit #{startIndex}, #{pageSize}
</select>

4. 前N条数据查询

  • 示例1:

xml
<select id="findTopN" resultType="com.example.model.User">
select * from user
order by id desc
limit 0, #{n}
</select>

  • 示例2:

xml
<select id="findTopNByCondition" resultType="com.example.model.User">
select * from user
where gender = #{gender}
order by id desc
limit 0, #{n}
</select>

5. 批量插入

  • 示例1:

xml
<insert id="batchInsert" parameterType="java.util.List">
insert into user(name, age, gender)
values
<foreach collection="list" item="item" separator=",">
(#{item.name}, #{item.age}, #{item.gender})
</foreach>
</insert>

  • 示例2:

xml
<insert id="batchInsertByCondition" parameterType="java.util.List">
insert into user(name, age, gender)
values
<foreach collection="list" item="item" separator=",">
<if test="item.gender != null">
(#{item.name}, #{item.age}, #{item.gender})
</if>
<if test="item.gender == null">
(#{item.name}, #{item.age}, '未知')
</if>
</foreach>
</insert>

6. 批量更新

  • 示例1:

xml
<update id="batchUpdate" parameterType="java.util.List">
<foreach collection="list" item="item">
update user set name = #{item.name}, age = #{item.age} where id = #{item.id};
</foreach>
</update>

  • 示例2:

xml
<update id="batchUpdateByCondition" parameterType="java.util.List">
<foreach collection="list" item="item">
update user
<set>
<if test="item.name != null"> name = #{item.name},</if>
<if test="item.age != null"> age = #{item.age},</if>
</set>
where id = #{item.id};
</foreach>
</update>

7. 批量删除

  • 示例1:

xml
<delete id="batchDelete" parameterType="java.util.List">
delete from user where id in
<foreach collection="list" open="(" close=")" separator=",">
#{item}
</foreach>
</delete>

  • 示例2:

xml
<delete id="batchDeleteByCondition" parameterType="java.util.List">
delete from user where gender = #{gender} and age between #{startAge} and #{endAge}
and id in
<foreach collection="list" open="(" close=")" separator=",">
#{item}
</foreach>
</delete>

8. 多表联查

  • 示例1:

```xml




...



...


```

  • 示例2:

```xml




...



...


...


```

9. 存储过程调用

  • 示例1:

xml
<select id="callQuery" statementType="CALLABLE" parameterType="com.example.dto.QueryParam">
{call query_users(#{param.name, mode=IN, jdbcType=VARCHAR}, #{param.total, mode=OUT, jdbcType=INTEGER})}
</select>

  • 示例2:

xml
<insert id="callInsert" statementType="CALLABLE" parameterType="com.example.model.User">
{call insert_user(#{name, mode=IN, jdbcType=VARCHAR}, #{age, mode=IN, jdbcType=INTEGER},
#{gender, mode=IN, jdbcType=VARCHAR}, #{id, mode=OUT, jdbcType=INTEGER})}
</insert>

10. SQL注入攻击防御

  • 示例1:

xml
<select id="findUserByName" resultType="com.example.model.User">
select * from user where name like concat('%',#{name,jdbcType=VARCHAR},'%')
</select>

  • 示例2:

xml
<insert id="insertUser" parameterType="com.example.model.User">
insert into user(name, age, gender)
values (#{name,jdbcType=VARCHAR}, #{age,jdbcType=INTEGER}, #{gender,jdbcType=VARCHAR})
select last_insert_id()
</insert>

上述10种MyBatis的写法都可以广泛应用于各种需求场景,帮助开发者快速、高效地完成各种数据库操作。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MyBatis通用的10种写法总结大全 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • JAVA学习之一步步搭建spring框架

    JAVA学习之一步步搭建Spring框架 Spring是一个开源的Java框架,它提供了一种轻量级的解决方案,用于构建企业级应用程序。本文将详细讲解如何一步步搭建Spring框架。 1. 安装Java和Maven 在开始搭建Spring框架之前,我们需要先安装Java和Maven。Java是一种广泛使用的编程语言,而Maven是一个Java项目管理工具,它可…

    Java 2023年5月18日
    00
  • Java命令设计模式详解

    Java命令设计模式详解 本文将详细介绍Java命令设计模式。首先,我们会讲解什么是设计模式以及为什么要使用它们。接着,会详细讲解Java命令设计模式的相关概念以及在实际应用中的使用。最后,会提供两个示例说明,以帮助读者更好地掌握Java命令设计模式。 什么是设计模式? 在软件开发阶段,我们经常需要解决一些常见的问题,如对象的创建、系统的分布、通信的实现、异…

    Java 2023年5月26日
    00
  • Java项目的目录结构详解

    下面我来详细讲解Java项目的目录结构: 1. 为什么需要规范的目录结构 在一个Java项目中使用规范的目录结构,可以帮助我们清晰地组织我们写的代码,管理项目中的不同模块,提高我们的项目管理和团队协作效率。 2. Java项目的目录结构 下面是Java项目的目录结构示意图: project ├── src │ ├── main │ │ ├── java # …

    Java 2023年5月20日
    00
  • SSH框架网上商城项目第24战之Struts2中处理多个Model请求的方法

    下面将详细讲解“SSH框架网上商城项目第24战之Struts2中处理多个Model请求的方法”的完整攻略。 前言 在网上商城项目开发过程中,处理多个 Model 的请求是一个比较常见的需求。本文将详细说明在 Struts2 中如何处理多个 Model 的请求,并提供两个示例说明。 具体步骤 步骤一:定义 Action 类 在 Struts2 中,我们可以通过…

    Java 2023年5月26日
    00
  • Springmvc完成ajax功能实例详解

    在 Spring MVC 中,我们可以使用 AJAX 技术来实现异步请求和响应。本文将详细讲解 Spring MVC 完成 AJAX 功能的实例,包括如何使用 @ResponseBody 注解和 ResponseEntity 类,并提供两个示例说明。 使用 @ResponseBody 注解 在 Spring MVC 中,我们可以使用 @ResponseBod…

    Java 2023年5月18日
    00
  • 如何验证Tomcat Gzip配置是否生效的方法

    当我们在Tomcat中配置gzip压缩后,我们需要一些方法来验证我们的配置是否生效。下面提供了两种方法来验证Tomcat Gzip配置是否生效的方法: 方法1:检查HTTP请求头中是否包含“Content-Encoding: gzip” 验证Tomcat Gzip配置是否生效的方法之一是检查HTTP响应头是否包含“Content-Encoding: gzip…

    Java 2023年5月19日
    00
  • 解决fastjson泛型转换报错的解决方法

    解决fastjson泛型转换报错的解决方法 问题描述: fastjson是Java中一个非常常用的JSON处理库,其中序列化和反序列化功能特别强大,但在使用其进行泛型反序列化时,会出现“com.alibaba.fastjson.JSONException: parse error”等异常,这就涉及到fastjson泛型转换错误的问题。 解决方法: 解决这个问…

    Java 2023年5月26日
    00
  • IDEA 如何导入别人的javaweb项目进行部署

    下面是在 IDEA 中导入别人的 JavaWeb 项目并进行部署的详细攻略: 步骤1:下载并安装 IDEA 如果您还没有安装 IDEA,可以到 IntelliJ IDEA 官网下载对应版本并安装。安装过程中请按照提示一步一步操作即可。 步骤2:下载并解压缩 JavaWeb 项目 假设您已经获得了别人的 JavaWeb 项目源代码,接下来需要将其解压缩到本地。…

    Java 2023年6月2日
    00
合作推广
合作推广
分享本页
返回顶部