事务是一组原子性的操作序列,要么全部成功执行,要么全部失败。在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&characterEncoding=utf-8&useSSL=false&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语句的工作量。