MaBatis修改数据(Update操作)

本文详细介绍了在数据库操作中如何使用事务来确保数据的一致性和完整性。通过一个具体的例子,展示了在Java环境下如何在没有异常时提交事务,而在遇到异常时进行事务回滚的过程。特别强调了在增、删、改操作中提交事务的重要性。

没有异常执行事务,有异常时进行事务的回滚

增、删、改 需要提交事务

在这里插入图片描述

更新测试类updateDept

 public void updateDept(){
        try {
        Dept dept = new Dept();
        dept.setName("更新啦");
        dept.setId(17);
        session.update("DEPT.updateDept",dept);
        session.commit();//正常提交
        } catch (Exception e) {
            e.printStackTrace();
            session.rollback();//异常回滚
        }

映射文件

在这里插入图片描述

### 使用 MyBatis 操作 ClickHouse 执行 Update 操作 为了实现对 ClickHouse 的更新操作,可以利用 `MyBatis` 结合特定于 ClickHouse 的方言来构建 SQL 语句。由于 ClickHouse 对标准 SQL 更新语法的支持有所不同,因此需要特别处理。 #### 配置 MyBatis 和 ClickHouse 连接 首先,在项目的依赖管理文件中引入必要的库: ```xml <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.2.0</version> </dependency> <!-- 添加 ClickHouse JDBC驱动 --> <dependency> <groupId>yandex.clickhouse</groupId> <artifactId>clickhouse-jdbc</artifactId> <version>0.3.2</version> </dependency> ``` 接着配置数据库连接信息以及 MyBatis 设置: ```yaml spring: datasource: url: jdbc:clickhouse://localhost:8123/default username: default password: mybatis-plus: configuration: map-underscore-to-camel-case: true ``` #### 编写 Mapper 接口定义更新逻辑 创建一个接口用于描述要执行的操作: ```java import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; @Mapper public interface UserMapper extends BaseMapper<UserEntity> { } ``` 对于自定义的更新需求,则可以通过 XML 文件或者注解方式指定具体的 SQL 片段。这里采用更灵活的 XML 方式展示如何编写复杂的更新语句: ```xml <?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="com.example.UserMapper"> <!-- 自定义更新SQL片段 --> <sql id="customSetClause"> column_name = #{value}, another_column = 'fixed_value' </sql> <!-- 定义update方法 --> <update id="updateUserCustomFieldsById" parameterType="map"> ALTER TABLE users UPDATE <include refid="customSetClause"/> WHERE user_id = #{userId}; </update> </mapper> ``` 注意这里的 `ALTER TABLE ... UPDATE` 是针对 ClickHouse 修改记录的一种特殊形式[^1]。 #### 调用更新功能 通过服务层调用上述定义好的映射器完成实际的数据变更工作: ```java @Service public class UserService { @Autowired private UserMapper userMapper; public void updateUserStatus(Long userId, String newValue){ Map<String,Object> params=new HashMap<>(); params.put("userId", userId); params.put("value", newValue); int affectedRows=userMapper.updateUserCustomFieldsById(params); System.out.println(affectedRows+" rows updated."); } } ``` 此过程展示了怎样借助 `UpdateWrapper.setSql()` 方法设置动态字段值[^2],同时也体现了整个数据流从读取至最终状态标记的过程[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值