因为JOOQ对Spring Boot有很好的支持 , 所以我们只需要引入相应的starter依赖即可 , 而具体的版本则是与Spring Boot的版本关联的 , 这里并不需要我们去指定 。
其次 , 我们需要在项目中配置JOOQ的代码生成插件 , 这样JOOQ就可以自动在项目编译的时候为我们生成所需要的数据库以来对象了 , 在项目的pom.xml中配置Maven插件 , 如下:
配置完成这个Maven插件后 , 基本上JOOQ就算差不多与SpringBoot集成完成了 , 如果此时编译项目JOOQ代码插件就会在target/generated-sources/jooq目录下根据数据库中的表结构生成相应的数据库操作对象 , 而这个过程则完成对开发人员透明 , 我们并不需要做额外的事情 。
而在具体的业务逻辑中 , 需要操作数据库时我们就可以很方便的使用这些自动生成的代码来进行操作 , 例如 , 我们需要在业务代码中执行insert操作 , 代码如下:
@Slf4j
@Service
public class OpenServiceImpl implements OpenService {
@Autowired
protected DSLContext dslContext;
@Override
public BalanceChargeTradeResVo balanceChargeTrade(BalanceChargeTradeReqVo balanceChargeTradeReqVo)
throws VerifyDataException BalanceCreateOrderException {
BalanceChargeTradeResVo balanceChargeTradeResVo;
try {
WalletUserBalanceOrderRecord walletUserBalanceOrderRecord = createBalanceChargeOrder(
balanceChargeTradeReqVo);
dslContext.executeInsert(walletUserBalanceOrderRecord);
balanceChargeTradeResVo = BalanceChargeTradeResVo.builder().userId(balanceChargeTradeReqVo.getUserId())
.amount(balanceChargeTradeReqVo.getAmount()).currency(balanceChargeTradeReqVo.getCurrency())
.orderId(walletUserBalanceOrderRecord.getOrderId()).businessType(BusinessType.TOP_UP.getCode())
.build();
return balanceChargeTradeResVo;
catch (Exception e) {
throw new BalanceCreateOrderException(ErrorCode.BALANCE_CHARGE_ORDER_ERROR.getCode()
ErrorCode.BALANCE_CHARGE_ORDER_ERROR.getDesc());
在以上代码中 , 我们只需要在service业务类中注入DSLContext对象 , 并在组装完自动生成的数据库类的对象后执行executeInsert方法就可以完成insert操作了 。 而如果我们要完成查询操作 , 也可以很简单的实现 , 代码如下
@Slf4j
@Service
public class OpenServiceImpl implements OpenService {
@Autowired
protected DSLContext dslContext;
@Override
public BalanceQueryResVo balanceQuery(long userId) throws AccountNoExistException {
List<WalletUserBalanceRecord> walletUserBalanceRecordList = dslContext
.selectFrom(WalletUserBalance.WALLET_USER_BALANCE)
.where(WalletUserBalance.WALLET_USER_BALANCE.USER_ID
.eq(String.valueOf(userId))).fetchInto(WalletUserBalanceRecord.class);
if (walletUserBalanceRecordList == null || walletUserBalanceRecordList.size() <= 0) {
- 单项冠军|再添三家“小巨人”,青岛高新区梯度培育见成效
- 为什么科学家表示人类“灭绝”的可能性极低?这些理由你赞同吗?
- 为什么科学家知道太阳的原理,却无法制造出人造太阳
- 最前线 | 腾讯游戏发布40余款产品与项目,《王者荣耀》发布全新规划
- 腾讯游戏发布40余款产品与项目,《王者荣耀》发布全新规划
- 为什么科学家用昆虫翅膀的起源质疑进化论?达尔文到底是对是错?
- 为什么夜空是黑的?你以为的“正常”,或许隐藏着不知道的秘密
- 为什么温度高到一定程度的物体,就会发光?
- 为什么现在很少有人提及“克隆技术”了?“克隆技术”有何缺点?
- 为什么同学群里,很少有人说话,大部分人都选择沉默或者屏蔽?
