mybatis动态sql之新增与更新方式

 更新时间:2023年07月17日 09:55:10   作者:某猿蚊常叮  
这篇文章主要介绍了mybatis动态sql之新增与更新方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

mybatis动态sql新增与更新

记录一个简单的mybatis动态sql例子

新增

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.ruiskey.mapper.UserMapper">
    <insert id="save">
        insert into user
            <trim prefix="(" suffix=")" suffixOverrides=",">
                <if test="id != null and id != ''">
                    id,
                </if>
                <if test="username != null and username != ''">
                    username,
                </if>
                <if test="password != null and password != ''">
                    password,
                </if>
                <if test="nickname != null and nickname != ''">
                    nickname,
                </if>
                <if test="email != null and email != ''">
                    email,
                </if>
                <if test="phone != null and phone != ''">
                    phone,
                </if>
                <if test="address != null and address != ''">
                    address
                </if>
            </trim>
            <trim prefix="values (" suffix=")" suffixOverrides=",">
                <if test="id != null and id != ''">
                    #{id},
                </if>
                <if test="username != null and username != ''">
                    #{username},
                </if>
                <if test="password != null and password != ''">
                    #{password},
                </if>
                <if test="nickname != null and nickname != ''">
                    #{nickname},
                </if>
                <if test="email != null and email != ''">
                    #{email},
                </if>
                <if test="phone != null and phone != ''">
                    #{phone},
                </if>
                <if test="address != null and address != ''">
                    #{address}
                </if>
            </trim>
    </insert>
</mapper>

更新

<update id="update">
    update user
    <set>
        <if test="username != null and username != ''">
            username = #{username}
        </if>
        <if test="password != null and password != ''">
            password = #{password}
        </if>
        <if test="nickname != null and nickname != ''">
            nickname = #{nickname}
        </if>
        <if test="email != null and email != ''">
            email = #{email}
        </if>
        <if test="phone != null and phone != ''">
            phone = #{phone}
        </if>
        <if test="address != null and address != ''">
            address = #{address}
        </if>
    </set>
    <where>
        id = #{id}
    </where>
</update>

mybatis动态SQL增删改查

我们在对数据库进行增删改查的时候,很多时候我们并不确定我们要进行传入的参数的个数,种类以及是否为空。

此时我们就需要用到mybatis动态sql来对数据库进行灵活的交互。

  • 步骤一:导入相关jar包,编写连接数据库的MybatisUtil工具类
  • 步骤二:在src下配置mybatis.xml配置文件。其中对数据库连接,映射文件的加载进行配置。(简写配置可选)
  • 步骤三:建立实体类Student

  • 步骤四:增删改查的方法以及映射文件StudentMapper.xml中配置的编写。

添加数据

insert 对应的映射文件中配置:

通过传入数组参数删除

deleteArray对应的映射文件中配置:

通过传入List集合参数进行删除

deleteList 对应的映射文件中配置:

更新数据

update 对应的映射文件中配置:

神奇的是:

查找数据

findAll对应的映射文件配置

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java多线程产生死锁的必要条件

    Java多线程产生死锁的必要条件

    今天小编就为大家分享一篇关于Java多线程产生死锁的必要条件,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • rabbitmq中routingkey的作用说明

    rabbitmq中routingkey的作用说明

    这篇文章主要介绍了rabbitmq中routingkey的作用说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • JAVA截取字符串的几种常用方法

    JAVA截取字符串的几种常用方法

    这篇文章主要给大家介绍了关于JAVA截取字符串的几种常用方法, 在处理字符串的过程中有很多情况下会遇到需要截取字符串的情况,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-09-09
  • SpringBoot集成Drools打造动态规则管理模板引擎

    SpringBoot集成Drools打造动态规则管理模板引擎

    本文详解SpringBoot与Drools的整合方法,涵盖依赖管理、规则文件编写、KieService配置等,旨在通过规则引擎实现业务逻辑动态化管理,提升微服务应用的灵活性、可维护性及快速部署能力,对SpringBoot Drools相关知识感兴趣的朋友一起看看吧
    2025-07-07
  • springboot ConfigurationProperties的绑定源码示例解析

    springboot ConfigurationProperties的绑定源码示例解析

    这篇文章主要为大家介绍了springboot ConfigurationProperties的绑定源码示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • 浅谈springboot之JoinPoint的getSignature方法

    浅谈springboot之JoinPoint的getSignature方法

    这篇文章主要介绍了springboot之JoinPoint的getSignature方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • Spring Boot中@Import三种使用方式实例详解

    Spring Boot中@Import三种使用方式实例详解

    这篇文章主要介绍了Spring Boot中@Import三种使用方式,主要有引入普通类,引入importSelector的实现类及引入importBeanDefinitionRegister的实现类,结合实例代码给大家讲解的非常详细,需要的朋友可以参考下
    2022-11-11
  • PowerDesigner连接数据库的实例详解

    PowerDesigner连接数据库的实例详解

    这篇文章主要介绍了PowerDesigner连接数据库的实例详解的相关资料,如有疑问请留言或者到本站社区交流讨论,需要的朋友可以参考下
    2017-10-10
  • springboot之@KafkaListener注解自动装配流程分享

    springboot之@KafkaListener注解自动装配流程分享

    @KafkaListener是Spring Kafka框架提供的注解,Spring Boot对其提供了原生支持,通过引入依赖并在配置文件中加入Kafka相关配置,可以触发Kafka组件的自动状态,扫描@KafkaListener注解是Spring Boot自动装配的一部分
    2026-01-01
  • 如何在Java中实现一个散列表

    如何在Java中实现一个散列表

    这篇文章主要介绍了如何在Java中实现一个散列表,建一个HashMap,以String类型为Key,Int类型为Value,下文具体的操作过程需要的小伙伴可以参考一下
    2022-04-04

最新评论