2021-08-10 idea 事务的操作

本文介绍了如何在IntelliJ IDEA中进行数据库事务的处理,包括创建数据库表和编写事务代码,主要涉及MySQL和JDBC的相关操作。

在这里插入图片描述
创建数据库表

CREATE TABLE account(
                        id Int PRIMARY KEY AUTO_INCREMENT,
                        NAME VARCHAR(40),
                        money FLOAT
);

/*插入测试数据*/
insert into account(name,money) values('A',1000);
insert into account(name,money) values('B',1000);
insert into account(name,money) values('B',1000);

事务代码

import com.pan.lesson01.lesson02.utils.JdbcUtils;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class TestTransaction {
    public static void main(String[] args) throws SQLException {
        Connection conn = null;
        PreparedStatement st = null;
        ResultSet rs = null;

        try {
             conn = JdbcUtils.getConnection();
             //关闭数据库的自动提交,自动开启事务java中
            conn.setAutoCommit(false);

            String sql1 = "update account set money=money-100 where name='A'" ;
           st = conn.prepareStatement(sql1);
           st.executeUpdate();


            String sql2 = "update account set money=money+100 where name='B'" ;
            st = conn.prepareStatement(sql2);
            st.executeUpdate();
         //提交事务

            conn.commit();
            System.out.println("成功");
             conn.prepareStatement(sql2);
        } catch (SQLException throwables) {
            conn.rollback();   //如果失败就回滚, 不写这句也会回滚
            throwables.printStackTrace();
        }finally {
            JdbcUtils.release((com.mysql.jdbc.Connection) conn,st,rs);
        }
    }
}
<think>我们正在回答用户关于命令 `rm -rf .idea *.iml` 的作用的问题。 根据之前的对话历史,用户提供了几个引用,其中引用[2]和引用[3]与问题直接相关。 引用[2]说明:.idea 目录是 JetBrains IDE(如 IntelliJ IDEA)为每个项目创建的配置文件夹,包含项目的个性化设置和运行环境信息,通常不应提交到版本控制系统。 引用[3]是一个批处理脚本,其中包含删除.idea目录和*.iml文件的命令。 因此,我们可以这样解释命令: 1. `rm` 是 remove 的缩写,用于删除文件或目录。 2. `-rf` 是两个选项的组合: - `-r` 或 `-R`:递归删除,用于删除目录及其内容。 - `-f`:强制删除,不提示确认。 3. `.idea`:这是一个目录,通常是JetBrains IDE(如IntelliJ IDEA)的项目配置目录。 4. `*.iml`:这是一个文件模式,匹配所有以`.iml`为后缀的文件。`.iml`文件也是IntelliJ IDEA项目配置文件。 命令的作用是:强制递归删除当前目录下的`.idea`目录以及当前目录下(包括子目录)所有后缀为`.iml`的文件。 注意:这个命令在Unix/Linux系统上使用。在Windows系统中,通常使用del和rd命令,如引用[3]中的批处理脚本所示。 需要特别警告:这个命令非常危险,因为被删除的文件和目录将无法恢复(除非有备份)。特别是使用`-rf`选项时,不会询问确认。 为什么需要删除这些文件? 通常,在版本控制(如Git)中,我们希望忽略这些由IDE生成的项目配置文件,因为它们与具体开发环境相关,不适合纳入版本控制。有时在清理项目或重新初始化时,需要删除这些文件。 引用[4]还提到了如何从git中删除这些文件的记录而不删除本地文件(使用`--cached`选项),但我们现在讨论的命令是直接删除本地文件。 因此,我们的回答如下: </think>`rm -rf .idea *.iml` 命令是在 Linux/Unix 系统中用于**强制删除项目配置文件**的系统级指令,具体作用如下: --- ### 🔧 一、命令分解解析 1. **`rm`** - 基础命令:文件/目录删除工具(remove 缩写) 2. **`-rf`** - `-r`:递归删除(删除目录及其所有子内容) - `-f`:强制模式(无确认提示,直接执行) 3. **目标对象** - `.idea`:JetBrains IDE(如 IntelliJ IDEA)的**项目配置目录**[^2] - `*.iml`:匹配所有**项目模块配置文件**(IntelliJ Module 缩写) --- ### ️ 二、执行效果说明 1. **删除 `.idea` 目录** ```bash # 移除全部IDE配置,包括: rm -rf .idea/ # → workspace.xml(工作区设置) # → runConfigurations/(运行配置) # → codeStyles/(代码风格) # → 其他20+个配置文件[^2] ``` 2. **清除 `.iml` 文件** ```bash rm -f *.iml # 删除所有模块定义文件 # 例如:project-name.iml ``` 3. **关键特性** - 不可逆操作(无回收站机制) - 影响范围:**当前目录及所有子目录**(因 `-r` 参数) - 典型场景:项目重置、配置文件清理、版本控制准备[^4] --- ### ⚡ 三、应用场景示例 1. **重置开发环境** 当 IDE 配置损坏时快速重建: ```bash $ git clean -fdx # 先清理未跟踪文件 $ rm -rf .idea *.iml && code . ``` 2. **准备代码提交** 移除本地配置后提交纯净代码: ```bash $ rm -rf .idea *.iml $ git add . $ git commit -m "移除IDE配置文件" ``` 3. **批量清理项目** 递归处理多项目仓库: ```bash find . -name ".idea" -exec rm -rf {} + find . -name "*.iml" -delete ``` --- ### ❗ 四、重大风险警告 1. **数据丢失** - 永久删除调试配置、代码模板等个性化设置 - 可能破坏项目结构(需重新导入IDE) 2. **替代安全方案** ```bash # 仅从git索引移除,保留本地文件 git rm -rf --cached .idea *.iml [^4] ``` 3. **防御性操作** ```bash # 先备份再删除 cp -r .idea ~/backup_idea && rm -rf .idea ``` --- ### 📌 技术原理 `rm -rf` 通过系统调用 `unlink()` 和 `rmdir()` 直接操作 inode: 1. `-r` 启用深度优先遍历(DFS)删除子项 2. `-f` 屏蔽所有错误提示(包括权限不足) 3. 文件系统无事务机制 → **删除后不可恢复** --- ####
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值