java jOOQ持久化

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java jOOQ持久化相关的知识,希望对你有一定的参考价值。

##使用jOOQ插入数据,返回主键
public CarInsureOrgBonusRateConfigRecord saveConfig(CarInsureOrgRateConfigDTO orgRateDTO) throws Exception{
    CarInsureOrgBonusRateConfig rateConfig = Tables.CAR_INSURE_ORG_BONUS_RATE_CONFIG;

    CarInsureOrgBonusRateConfigRecord record = getDsl().insertInto(rateConfig)
            .set(rateConfig.ORG_CODE, orgRateDTO.getOrgCode())
            .set(rateConfig.BIZ_AREA, JSON.toJSONString(orgRateDTO.getBizArea()))
            .set(rateConfig.VALID_START_DATETIME, orgRateDTO.getValidStartTime())
            .set(rateConfig.VALID_END_DATETIME, orgRateDTO.getValidEndTime())
            .set(rateConfig.TAX_RATE, orgRateDTO.getTaxRate())
            .set(rateConfig.TAX_MEMO, orgRateDTO.getTaxMemo())
            .set(rateConfig.BAOF_SUPERPOSITION, JSON.toJSONString(orgRateDTO.getBaofSuperposition()))
            .set(rateConfig.RATE_CONFIG, JSON.toJSONString(orgRateDTO.getRateConfig()))
            .set(rateConfig.CREATE_DATE, System.currentTimeMillis())
            .set(rateConfig.MEMO, orgRateDTO.getMemo()).returning(rateConfig.ID).fetchOne();
    return record;
}
### 返回主键
```java
    @Override
    public Long savePayAccountInfo(FinancePayAccountInfoRecord infoRecord) {
        FinancePayAccountInfo accountInfo = Tables.FINANCE_PAY_ACCOUNT_INFO;
        FinancePayAccountInfoRecord fetchOne = financeDsl.insertInto(accountInfo).set(infoRecord).returning(accountInfo.ID).fetchOne();
        if (fetchOne != null) {
            return fetchOne.getValue(accountInfo.ID);
        }
        return null;
    }
```
### 返回对象
```java
    @Override
    public Long savePayAccountInfo(FinancePayAccountInfoRecord infoRecord) {
        FinancePayAccountInfo accountInfo = Tables.FINANCE_PAY_ACCOUNT_INFO;
        FinancePayAccountInfoRecord fetchOne = financeDsl.insertInto(accountInfo).set(infoRecord).returning(accountInfo.ID).fetchOne();
        return fetchOne.getValue(accountInfo.ID);
    }
```
##使用jdbcTemplate插入jOOQ生成的sql
public long saveConfig(CarInsureOrgRateConfigDTO orgRateDTO) throws Exception{
    CarInsureOrgBonusRateConfig rateConfig = Tables.CAR_INSURE_ORG_BONUS_RATE_CONFIG;

    InsertSetMoreStep insertSetMoreStep = getDslContext().insertInto(rateConfig)
            .set(rateConfig.ORG_CODE, orgRateDTO.getOrgCode())
            .set(rateConfig.BIZ_AREA, JSON.toJSONString(orgRateDTO.getBizArea()))
            .set(rateConfig.VALID_START_DATETIME, orgRateDTO.getValidStartTime())
            .set(rateConfig.VALID_END_DATETIME, orgRateDTO.getValidEndTime())
            .set(rateConfig.TAX_RATE, orgRateDTO.getTaxRate())
            .set(rateConfig.TAX_MEMO, orgRateDTO.getTaxMemo())
            .set(rateConfig.BAOF_SUPERPOSITION, JSON.toJSONString(orgRateDTO.getBaofSuperposition()))
            .set(rateConfig.RATE_CONFIG, JSON.toJSONString(orgRateDTO.getRateConfig()))
            .set(rateConfig.CREATE_DATE, System.currentTimeMillis())
            .set(rateConfig.MEMO,orgRateDTO.getMemo());
    final String sql = insertSetMoreStep.newRecord().toString();

    KeyHolder keyHolder = new GeneratedKeyHolder();
    getJdbcTemplate().update(new PreparedStatementCreator() {
        @Override
        public PreparedStatement createPreparedStatement(Connection con) throws SQLException {
            return con.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
        }
    }, keyHolder);
    return keyHolder.getKey().longValue();
}

以上是关于java jOOQ持久化的主要内容,如果未能解决你的问题,请参考以下文章

我的开源 Java 持久性库应该支持哪些其他 RDBMS [关闭]

后端开发:数据持久化框架为什么放弃HibernateJPAMybatis,最终选择JDBCTemplate!

为什么项目中用了JOOQ后大家都不愿再用Mybatis?

JPA / Hibernate可以与其他持久性框架(如jOOQ)结合使用

数据持久化框架为什么放弃HibernateJPAMybatis,最终选择JDBCTemplate!

在 Hibernate 事务中执行 jOOQ 语句