关于人工智能:74-事务管理

32次阅读

共计 3679 个字符,预计需要花费 10 分钟才能阅读完成。

事务是一组原子性的操作序列,要么全副胜利执行,要么全副失败。在 Java 中,能够通过 Connection 对象来治理事务。以下示例展现了如何应用事务处理进行数据插入操作:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

public class JdbcTransactionExample {public static void main(String[] args) {
        try {
            // 加载数据库驱动并连贯到数据库
            Class.forName("com.mysql.cj.jdbc.Driver");
            String url = "jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true";
            String username = "root";
            String password = "mypassword";
            Connection connection = DriverManager.getConnection(url, username, password);

            // 敞开主动提交,开始事务处理
            connection.setAutoCommit(false);

            // 插入数据
            String sql = "INSERT INTO users (name, age) VALUES (?, ?)";
            PreparedStatement preparedStatement = connection.prepareStatement(sql);

            // 增加数据
            preparedStatement.setString(1, "User 4");
            preparedStatement.setInt(2, 35);
            preparedStatement.executeUpdate();

            preparedStatement.setString(1, "User 5");
            preparedStatement.setInt(2, 40);
            preparedStatement.executeUpdate();

            // 提交事务
            connection.commit();

            // 敞开资源
            preparedStatement.close();
            connection.close();} catch (Exception e) {e.printStackTrace();
        }
    }
}

7. 应用 ORM 框架

ORM(对象关系映射)框架能够简化数据库操作,让开发者以面向对象的形式与数据库进行交互。Hibernate 和 MyBatis 是两个罕用的 Java ORM 框架。以下是一个简略的 MyBatis 示例,展现如何进行数据库操作:

首先,增加 MyBatis 依赖:

Maven:

<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.6</version>
</dependency>

Gradle:

implementation 'org.mybatis:mybatis:3.5.6'

接下来,创立一个 User 实体类:

public class User {
    private Integer id;
    private String name;
    private Integer age;

    // getter 和 setter
}

而后,创立一个 UserMapper 接口,用于定义数据库操作方法:

import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;

import java.util.List;

public interface UserMapper {@Select("SELECT * FROM users")
    List<User> findAll();

    @Insert("INSERT INTO users (name, age) VALUES (#{name}, #{age})")
    void insert(User user);
}

接着,创立一个 mybatis-config.xml 配置文件,配置 MyBatis:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mydb?useUnicode=true&amp;characterEncoding=utf-8&amp;useSSL=false&amp;allowPublicKeyRetrieval=true"/>
                <property name="username" value="root"/>
                <property name="password" value="mypassword"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper class="UserMapper"/>
    </mappers>
</configuration>

最初,应用 MyBatis 进行数据库操作:

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

public class MyBatisExample {public static void main(String[] args) {
        try {
            // 加载 MyBatis 配置文件
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);

            // 创立 SqlSessionFactory
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

            // 关上一个 SqlSession
            try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
                // 获取 UserMapper 接口的实例
                UserMapper userMapper = sqlSession.getMapper(UserMapper.class);

                // 插入一个用户
                User newUser = new User();
                newUser.setName("User 6");
                newUser.setAge(25);
                userMapper.insert(newUser);

                // 提交事务
                sqlSession.commit();

                // 查问所有用户
                List<User> users = userMapper.findAll();
                for (User user : users) {System.out.println("ID:" + user.getId() + ", Name:" + user.getName() + ", Age:" + user.getAge());
                }
            }
        } catch (IOException e) {e.printStackTrace();
        }
    }
}

这个示例展现了如何应用 MyBatis 框架进行根本的数据库操作,包含插入和查问。应用 ORM 框架能够简化数据库编程,缩小开发人员间接编写 SQL 语句的工作量。
举荐浏览:

https://mp.weixin.qq.com/s/dV2JzXfgjDdCmWRmE0glDA

https://mp.weixin.qq.com/s/an83QZOWXHqll3SGPYTL5g

正文完
 0