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日

相关文章

  • 消息推送平台终于要发布啦!

    我的开源项目消息推送平台Austin终于要上线了,迎来在线演示的第一版! ?项目在线演示地址:http://139.9.73.20:3000/ 消息推送平台?推送下发【邮件】【短信】【微信服务号】【微信小程序】【企业微信】【钉钉】等消息类型。 https://gitee.com/zhongfucheng/austin/ https://github.com/…

    Java 2023年5月4日
    00
  • Spring Boot使用和配置Druid

    下面是SpringBoot使用和配置Druid的完整攻略: 1. 引入Druid和SpringBoot Starter依赖 在Maven的pom.xml文件中,加入Druid和SpringBoot Starter的依赖。 <dependency> <groupId>com.alibaba</groupId> <art…

    Java 2023年5月15日
    00
  • JAVAEE model1模型实现商品浏览记录(去除重复的浏览记录)(一)

    JavaEE Model1模型实现商品浏览记录(去除重复的浏览记录)的攻略大致分为以下几个步骤: Step1:分析需求,确定数据结构 首先,需要确定需要保存哪些数据。在本场景中,需要保存用户的浏览记录,因此需要保存的数据包括商品ID(item_id)和浏览时间(view_time)。 为了去除重复的浏览记录,需要使用Java集合类HashSet来保存用户的浏…

    Java 2023年6月15日
    00
  • Spring Boot集成 Spring Boot Admin 监控

    首先需要说明的是 SpringBootAdmin 是一个监控和管理 SpringBoot 应用程序的开源项目。它集成了很多常用的监控功能,并提供了可视化界面,方便开发者监控和管理自己的应用程序。 下面我们来详细讲解 SpringBoot 集成 SpringBootAdmin 的完整攻略。 1. 引入依赖 在 pom.xml 中加入 SpringBootAdm…

    Java 2023年5月15日
    00
  • 导入项目出现Java多个工程相互引用异常A cycle was detected in the build path of project的解决办法

    当我们在导入一个Java项目时,可能会遇到工程之间相互引用的异常提示:“A cycle was detected in the build path of project”。这种情况下,我们不能正常构建我们的项目,此时我们需要采取一些解决措施。 以下是完整的解决方案: 原因 这个异常通常发生在多个Java工程之间相互引用的情况下。出现这个异常的原因通常是因为…

    Java 2023年5月27日
    00
  • 搭建java WEB开发环境和应用

    搭建Java Web开发环境和应用攻略 环境 搭建Java Web开发环境需要的软件包括: JDK(Java Development Kit) IDE(Integrated Development Environment) Tomcat(Web服务器) MySQL(关系型数据库) JDK JDK是Java开发SDK,是Java程序员开发Java程序的必备软件…

    Java 2023年5月19日
    00
  • 垃圾回收的实现原理是什么?

    下面我就来详细讲解一下“垃圾回收的实现原理是什么?”的完整使用攻略。 垃圾回收的实现原理 垃圾回收是一种自动化内存管理的技术,它可以在程序运行时,自动回收不再被使用的内存,以避免内存泄漏和内存溢出等问题的发生。垃圾回收的实现原理主要分为以下几个步骤: 标记阶段:首先遍历整个堆内存,对每个对象进行标记,标记出那些是活对象,那些是死对象; 清除阶段:然后将所有死…

    Java 2023年5月11日
    00
  • 详解SpringBoot+Thymeleaf 基于HTML5的现代模板引擎

    Sure,下面我会详细讲解“详解SpringBoot+Thymeleaf 基于HTML5的现代模板引擎”的完整攻略。 简介 Thymeleaf 是一个用于 Web 与独立环境的现代服务器端 Java 模板引擎。Thymeleaf 的主要目标是提供一种优雅和高度可维护的创建 XHTML / HTML5 的模板的方式;同时也可以非常轻松地拓展为JSP等模板引擎,…

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