Mybatis的添加和修改功能

MyBatis 添加功能

使用 MyBatis 实现添加功能通常涉及以下几个步骤:

定义插入操作的 SQL 语句,可以在 Mapper XML 文件中编写 insert 语句或者在接口中使用注解方式:

XML 方式示例:

xml 复制代码
<insert id="insertUser" parameterType="com.example.User">
    INSERT INTO user(name, age) VALUES(#{name}, #{age})
</insert>
 

接口注解方式示例:

java 复制代码
@Insert("INSERT INTO user(name, age) VALUES(#{name}, #{age})")
int insertUser(User user);
 

在 Service 层调用 Mapper 方法:

java 复制代码
User user = new User();
user.setName("张三");
user.setAge(25);
userMapper.insertUser(user);
 

如果需要获取自增主键,可以配置 useGeneratedKeys:

xml 复制代码
<insert id="insertUser" parameterType="com.example.User" 
        useGeneratedKeys="true" keyProperty="id">
    INSERT INTO user(name, age) VALUES(#{name}, #{age})
</insert>
 

MyBatis 修改功能

修改功能与添加类似,需要使用 update 语句:

XML 方式示例:

xml 复制代码
<update id="updateUser" parameterType="com.example.User">
    UPDATE user SET name=#{name}, age=#{age} WHERE id=#{id}
</update>
 

接口注解方式示例:

java 复制代码
@Update("UPDATE user SET name=#{name}, age=#{age} WHERE id=#{id}")
int updateUser(User user);
 

Service 层调用示例:

java 复制代码
User user = userMapper.getUserById(1);
user.setName("李四");
user.setAge(30);
userMapper.updateUser(user);
 

动态更新可以使用 set 标签:

xml 复制代码
<update id="updateUser" parameterType="com.example.User">
    UPDATE user
    <set>
        <if test="name != null">name=#{name},</if>
        <if test="age != null">age=#{age},</if>
    </set>
    WHERE id=#{id}
</update>
 

批量操作可以使用 foreach 标签:

xml 复制代码
<insert id="batchInsert" parameterType="java.util.List">
    INSERT INTO user(name, age) VALUES
    <foreach collection="list" item="item" separator=",">
        (#{item.name}, #{item.age})
    </foreach>
</insert>
 

总结:

MyBatis 的"添加(INSERT)"和"修改(UPDATE)"套路相同

  1. 写接口方法

  2. 写 XML(或注解)SQL

  3. 调用完必须提交事务sqlSession.commit()),否则数据不会真正进库。

相关推荐
b***748813 小时前
PHP在电子商务系统中的构建
开发语言·php
蜂蜜黄油呀土豆13 小时前
深入理解 Java Stream:从创建到过滤、归约、分组与聚合(带大量实战代码)
java·实战·stream流·api
岚天start13 小时前
Java程序生成Heap Dump堆内存快照文件的多种方法
开发语言·python·pycharm
一只叫煤球的猫13 小时前
从 JDK1.2 到 JDK21:ThreadLocal的进化解决了什么问题
java·后端·面试
天马行空-14 小时前
ES 精准匹配 和 模糊查询的实现方式
java·开发语言
Z***258014 小时前
Java计算机视觉
java·开发语言·计算机视觉
Tiger_shl14 小时前
SqlConnection、SqlCommand 和 SqlDataAdapter
开发语言·数据库·c#
一点事14 小时前
ruoyi:集成mybatisplus实现mybatis增强
java·开发语言·mybatis
e***877014 小时前
Tomcat Request Cookie 丢失问题
java·tomcat·firefox
你的冰西瓜14 小时前
C++14 新特性详解:相较于 C++11 的主要改进
开发语言·c++·stl