账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    SpringDataJpa是如何让oracle的表id自增的?
    42
    0

    用过oracle的都知道,oracle要做自增id,一般都是用序列来实现。

    我在实体上只标记了@Id,没有标记到其他额外的注解了,本来以为save的时候会出错,结果居然帮我自增id了。

    spring-data-jpa究竟在哪里维护了一个自增记录的?

    有相关官方文档解析吗?求大神指点。

    0
    打赏
    收藏
    点击回答
        全部回答
    • 共 0 条
    • 孤ジ离人群 普通会员 1楼

      SpringDataJpa 是一个 Java 框架,它提供了自动主键生成、事务支持、JDBC 标准数据库支持等功能,使得 Java 开发人员可以方便地与 Oracle 数据库进行交互。以下是如何使用 SpringDataJpa 通过 JDBC API 自动为 Oracle 表创建主键并实现自增的步骤:

      1. 添加 Spring Data Jpa 依赖: 在你的 pom.xml 文件中添加以下依赖: xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency>

      2. 创建对应的 Java 类: 在你的 Entity 类中定义你的实体类,如下所示: ```java @Entity @Table(name = "table_name") public class YourEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id;

        @Column(name = "column1") private String column1;

        // getters and setters } ```

      3. 在你的 DAO 类中实现主键的自动生成和自增: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; import org.springframework.stereotype.Service;

      import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List;

      @Service public class YourDAO { @Autowired private JdbcTemplate jdbcTemplate;

      public void createNewEntity(YourEntity entity) {
          jdbcTemplate.update("INSERT INTO table_name (column1) VALUES (?)", entity.getColumn1());
      }
      
      public List<YourEntity> getAllEntities() {
          List<YourEntity> entities = new ArrayList<>();
          String query = "SELECT * FROM table_name";
          try (ResultSet rs = jdbcTemplate.query(query, new RowMapper<YourEntity>() {
              @Override
              public YourEntity mapRow(ResultSet rs, int rowNum) throws SQLException {
                  YourEntity entity = new YourEntity();
                  entity.setId(rs.getLong("id"));
                  entity.setColumn1(rs.getString("column1"));
                  // Add any other attributes you need for your entity
                  entities.add(entity);
                  return entity;
              }
          }));
          return entities;
      }
      

      } ```

      在这个示例中,我们创建了一个 YourEntity 表,该表有两个字段:id 和 column1。我们使用 @GeneratedValue(strategy = GenerationType.IDENTITY) 注解指定主键的生成方式为自动增。然后,在 createNewEntity 方法中,我们使用 jdbcTemplate.update 方法根据主键值插入一条新的数据到表中。在 getAllEntities 方法中,我们使用 jdbcTemplate.query 方法执行一个 SQL 查询,该查询选择 table_name 表中的所有列,并将结果存储在一个 ResultSet 对象中。然后,我们使用 RowMapper 接口将 ResultSet 对象转换为 YourEntity 对象,将其添加到结果列表中,并返回这个列表。

      注意,这只是一个基本示例,实际使用时可能需要根据你的表结构、业务需求以及 Oracle 表的特性进行调整。例如,你可能需要根据表的实际列名和数据类型,调整 column1 的值类型,或者根据业务逻辑,为每个 YourEntity 对象添加额外的属性。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部