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日

相关文章

  • jsp要实现屏蔽退格键问题探讨

    为了实现在JSP页面中屏蔽退格键,我们需要进行以下步骤: 1. 绑定onkeydown事件 在需要进行屏蔽退格键的input元素上,绑定onkeydown事件,具体方式为在输入框的标签上添加onkeydown属性,并赋值一个javascript回调函数。以下是示例代码: <input type="text" name="u…

    Java 2023年6月15日
    00
  • java分布式流式处理组件Producer分区理论

    Java分布式流式处理组件Producer分区理论 在实现分布式流式处理的时候,数据的分区是一个很重要的考虑点,它关系到数据处理的负载均衡以及数据的可靠性。Java分布式流式处理组件Producer提供了分区的机制,可以灵活地对数据进行分区,这篇文章将介绍Producer的分区理论。 1. 消息分区 消息分区是指将消息划分到不同的分区,不同的分区可以在不同的…

    Java 2023年5月20日
    00
  • java图片验证码生成教程详解

    Java图片验证码生成教程详解 本文将介绍Java中生成图片验证码的方法和过程,包含以下主要内容:- 确定验证码的基本结构和样式- 利用Java的Graphics2D类绘制验证码- 将验证码转换成图片格式并输出 1. 确定验证码的基本结构和样式 验证码通常包括随机生成的字符、字母或数字等,可以有不同的字体、颜色、背景等样式。在本教程中,我们将生成一个4位随机…

    Java 2023年6月16日
    00
  • Mybatis-Plus 搭建与使用入门(小结)

    Mybatis-Plus 搭建与使用入门(小结) 本文介绍了如何使用 Mybatis-Plus 搭建一个基本的 CRUD 应用,并对其进行增强功能的使用。整个过程包含以下步骤: 1. 环境准备 为了使用 Mybatis-Plus,我们需要在项目中添加相关的依赖: <dependency> <groupId>com.baomidou&l…

    Java 2023年5月20日
    00
  • Springboot基础学习之初识SpringBoot

    下面我将为您详细讲解“Springboot基础学习之初识SpringBoot”的完整攻略。 概述 Spring Boot是一个基于Spring框架的快速开发Web应用的框架。它提供了自动配置、快速开发等特性,使开发者极大地提高了开发效率。当然,使用Spring Boot并不需要了解过多的Spring配置,非常适合初学者入门。 在这个攻略中,我们将带领您入门S…

    Java 2023年5月31日
    00
  • MyEclipse中连接数据库(创建数据库配置文件和连接)

    连接数据库是Java Web开发中非常常见和重要的操作。MyEclipse作为一款大型的开发工具,提供了非常方便的数据库连接方式。下面是连接数据库的完整攻略。 创建数据库配置文件 首先,需要在MyEclipse中创建一个数据库配置文件。这个配置文件包含数据库的驱动、地址、用户、密码等信息,用于连接数据库。具体操作如下: 在MyEclipse中选择“Windo…

    Java 2023年6月16日
    00
  • Java String字符串和Unicode字符相互转换代码

    下面是Java String字符串和Unicode字符相互转换代码的完整攻略: Unicode字符和Java String字符串的相互转换 在Java编程中,我们有时需要将Unicode字符和Java String字符串相互转换。Unicode字符是一个标准,它规定了所有字符及其对应的码点。而Java String字符串是由Unicode字符序列组成的。 U…

    Java 2023年5月20日
    00
  • java+jdbc+mysql+socket搭建局域网聊天室

    搭建局域网聊天室的完整攻略需要分为两个大步骤:第一步是利用Java编写前端应用程序,第二步是搭建后端服务器和数据库。 前端应用程序 前端应用程序使用Java编写,涉及到JDBC的使用和Socket编程。 1. 编写UI界面 首先,需要编写一个简单的UI界面,用于用户输入聊天室的地址和端口号,以及昵称和消息发送框。 public class ChatRoomC…

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