当前位置:首页 > Java

java如何向数据库中插入数据

2026-03-04 03:29:01Java

使用JDBC插入数据

JDBC(Java Database Connectivity)是Java连接数据库的标准API。通过JDBC向数据库插入数据需要以下步骤:

  1. 加载数据库驱动
    使用Class.forName()加载数据库驱动类。例如MySQL驱动:

    Class.forName("com.mysql.jdbc.Driver");
  2. 建立数据库连接
    通过DriverManager.getConnection()获取连接对象:

    Connection conn = DriverManager.getConnection(
        "jdbc:mysql://localhost:3306/mydb", "username", "password");
  3. 创建PreparedStatement
    使用预编译语句防止SQL注入:

    String sql = "INSERT INTO users (name, age) VALUES (?, ?)";
    PreparedStatement pstmt = conn.prepareStatement(sql);
  4. 设置参数并执行
    绑定参数并执行更新:

    pstmt.setString(1, "张三");
    pstmt.setInt(2, 25);
    int rows = pstmt.executeUpdate();
  5. 关闭资源
    在finally块中关闭连接:

    pstmt.close();
    conn.close();

使用JPA/Hibernate插入数据

JPA(Java Persistence API)是ORM框架的标准接口,Hibernate是其流行实现:

  1. 配置实体类
    使用注解定义实体与表的映射:

    @Entity
    @Table(name = "users")
    public class User {
        @Id @GeneratedValue
        private Long id;
        private String name;
        private Integer age;
        // getters/setters
    }
  2. 获取EntityManager
    通过持久化单元创建管理实例:

    EntityManagerFactory emf = Persistence.createEntityManagerFactory("myPU");
    EntityManager em = emf.createEntityManager();
  3. 持久化实体
    在事务中保存对象:

    em.getTransaction().begin();
    User user = new User();
    user.setName("李四");
    user.setAge(30);
    em.persist(user);
    em.getTransaction().commit();
  4. 关闭资源
    使用后关闭EntityManager:

    em.close();
    emf.close();

使用Spring Data JPA插入数据

Spring Data JPA进一步简化了持久层操作:

java如何向数据库中插入数据

  1. 定义Repository接口
    继承JpaRepository获得CRUD方法:

    public interface UserRepository extends JpaRepository<User, Long> {}
  2. 自动装配Repository
    通过依赖注入使用:

    @Autowired
    private UserRepository userRepo;
  3. 保存实体
    直接调用save方法:

    User user = new User();
    user.setName("王五");
    user.setAge(28);
    userRepo.save(user);

使用MyBatis插入数据

MyBatis通过XML或注解配置SQL映射:

  1. 配置Mapper接口
    定义插入方法:

    public interface UserMapper {
        @Insert("INSERT INTO users (name, age) VALUES (#{name}, #{age})")
        int insert(User user);
    }
  2. 获取SqlSession
    通过工厂创建会话:

    SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
    SqlSession session = factory.openSession();
  3. 执行插入
    获取Mapper并调用方法:

    java如何向数据库中插入数据

    UserMapper mapper = session.getMapper(UserMapper.class);
    mapper.insert(new User("赵六", 35));
    session.commit();
  4. 关闭会话
    操作完成后释放资源:

    session.close();

批量插入优化

当需要插入大量数据时,采用批量操作提升性能:

JDBC批量处理

conn.setAutoCommit(false);
PreparedStatement pstmt = conn.prepareStatement("INSERT...");
for (User user : userList) {
    pstmt.setString(1, user.getName());
    pstmt.addBatch();
}
int[] counts = pstmt.executeBatch();
conn.commit();

JPA批量配置
persistence.xml中添加:

<property name="hibernate.jdbc.batch_size" value="50"/>
<property name="hibernate.order_inserts" value="true"/>

事务管理

确保数据一致性需使用事务:

声明式事务(Spring)
在Service层添加注解:

@Transactional
public void addUsers(List<User> users) {
    users.forEach(userRepository::save);
}

编程式事务
手动控制事务边界:

TransactionStatus status = transactionManager.getTransaction(new DefaultTransactionDefinition());
try {
    // 数据库操作
    transactionManager.commit(status);
} catch (Exception e) {
    transactionManager.rollback(status);
}

分享给朋友:

相关文章

Vue数据绑定实现

Vue数据绑定实现

Vue 数据绑定的核心机制 Vue 的数据绑定基于响应式系统,通过 Object.defineProperty 或 Proxy 实现。当数据变化时,视图自动更新。 双向绑定的实现方式 v-model…

vue数据实现

vue数据实现

Vue 数据实现的核心方法 Vue.js 通过数据驱动视图更新,其核心实现基于响应式系统。以下是实现数据绑定的关键方法: 数据声明与响应式原理 在 Vue 2.x 中,使用 Object.defin…

vue实现数据分页

vue实现数据分页

Vue 实现数据分页的方法 使用计算属性分页 在 Vue 中,可以利用计算属性对数据进行分页处理。这种方法适用于前端分页,即一次性获取所有数据后在客户端进行分页。 data() { return…

vue实现数据劫持

vue实现数据劫持

Vue 数据劫持的实现原理 Vue 的数据劫持主要通过 Object.defineProperty 或 Proxy 实现,用于监听数据变化并触发视图更新。 使用 Object.definePrope…

vue实现动态刷新数据

vue实现动态刷新数据

Vue 实现动态刷新数据的方法 使用计算属性(Computed Properties) 计算属性会根据依赖的响应式数据自动更新,适合基于现有数据动态计算的场景。 <template>…

vue++实现数据滚动

vue++实现数据滚动

Vue 实现数据滚动的方法 使用 CSS 动画实现滚动 通过 CSS 的 @keyframes 和 animation 属性可以实现简单的数据滚动效果。定义一个动画,使内容从下往上移动。 <t…