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()),否则数据不会真正进库。

相关推荐
2301_816651226 分钟前
C++中的享元模式变体
开发语言·c++·算法
大傻^8 分钟前
Spring AI Alibaba ChatClient实战:流式输出与多轮对话管理
java·人工智能·后端·spring·springai·springaialibaba
m0_583203139 分钟前
C++中的访问者模式变体
开发语言·c++·算法
小帅学编程11 分钟前
英语学习笔记
java·笔记·学习
浅念-16 分钟前
C ++ 智能指针
c语言·开发语言·数据结构·c++·经验分享·笔记·算法
布谷歌16 分钟前
Fastjson枚举反序列化:当字符串不是枚举常量名时,会发生什么?
开发语言·python
虚幻如影17 分钟前
python识别验证码
开发语言·python
不染尘.17 分钟前
最小生成树算法
开发语言·数据结构·c++·算法·图论
ChineHe19 分钟前
基础篇003_Python基础语法
开发语言·人工智能·python
学编程就要猛20 分钟前
JavaEE初阶:文件操作和IO
java·java-ee