技术标签: jooq多表查询
packagecom.transsnet.sims.business;importjava.util.ArrayList;importjava.util.HashMap;importjava.util.List;importjava.util.Map;importorg.apache.commons.lang3.StringUtils;importorg.jooq.Condition;importorg.jooq.DSLContext;importorg.jooq.Record;importorg.jooq.Record1;importorg.jooq.Record2;importorg.jooq.Result;importorg.jooq.SelectJoinStep;importorg.jooq.UpdateSetFirstStep;importorg.jooq.UpdateSetMoreStep;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Component;importorg.springframework.transaction.annotation.Transactional;importorg.springframework.util.CollectionUtils;importcom.transsnet.sims.common.dto.PageDto;importcom.transsnet.sims.common.dto.PosDto;importcom.transsnet.sims.common.dto.RetailerDto;importcom.transsnet.sims.common.dto.SaDto;importcom.transsnet.sims.storage.easybuy_aad.Tables;importcom.transsnet.sims.storage.easybuy_aad.tables.daos.AadSaConfigDao;importcom.transsnet.sims.storage.easybuy_aad.tables.pojos.AadSaConfig;importcom.transsnet.sims.storage.easybuy_aad.tables.records.AadSaConfigRecord;
@Componentpublic classDemoBis {
@AutowiredprivateAadSaConfigDao aadSaConfigDao;
@AutowiredprivateDSLContext dslContext;private com.transsnet.sims.storage.easybuy_aad.tables.AadSaConfig aadSaConfig =Tables.AAD_SA_CONFIG;private com.transsnet.sims.storage.easybuy_aad.tables.AadPosConfig aadPosConfig =Tables.AAD_POS_CONFIG;private com.transsnet.sims.storage.easybuy_aad.tables.AadRetailerConfig aadRetailerConfig =Tables.AAD_RETAILER_CONFIG;private com.transsnet.sims.storage.easybuy_aad.tables.AadIndexTable aadIndexTable =Tables.AAD_INDEX_TABLE;/*** 分页查询list
*@parampageNum
*@parampageSize
*@paramdto
*@return
*/
public PageDto pageList(int pageNum, intpageSize, SaDto dto) {
SelectJoinStep selectRecord =dslContext.select().from(aadSaConfig);
SelectJoinStep> selectCountRecord =dslContext.selectCount().from(aadSaConfig);//写一个一定成立的条件,这里写主键不为空
Condition eq =aadSaConfig.ID.isNotNull();//按需要拼接查询条件
if(StringUtils.isNotBlank(dto.getSaId())) {
eq= eq.and(aadSaConfig.SA_ID.like("%" + dto.getSaId() + "%"));
}if(StringUtils.isNotBlank(dto.getStatus())) {
eq=eq.and(aadSaConfig.STATUS.eq(dto.getStatus()));
}//查询总数
Integer count = selectCountRecord.where(eq).fetchOne().into(Integer.class);//构造分页组件
PageDto pageDto = newPageDto(pageNum, pageSize, count);//查询数据
List list =selectRecord.where(eq).orderBy(aadSaConfig.ID.desc())
.limit(pageSize)
.offset(pageSize* (pageNum - 1))
.fetchInto(AadSaConfig.class);
pageDto.setList(list);returnpageDto;
}/*** 查询list
*@paramdto
*@return
*/
public ListfetchList(SaDto dto) {
SelectJoinStep selectRecord =dslContext.select().from(aadSaConfig);//写一个一定成立的条件,这里写主键不为空
Condition eq =aadSaConfig.ID.isNotNull();//按需要拼接查询条件
if(StringUtils.isNotBlank(dto.getSaId())) {
eq= eq.and(aadSaConfig.SA_ID.like("%" + dto.getSaId() + "%"));
}if(StringUtils.isNotBlank(dto.getStatus())) {
eq=eq.and(aadSaConfig.STATUS.eq(dto.getStatus()));
}//查询数据
List list =selectRecord.where(eq).orderBy(aadSaConfig.ID.desc())
.fetchInto(AadSaConfig.class);returnlist;
}/*** 根据销售id查询详细
*@paramsaId
*@return
*/
publicAadSaConfig detail(String saId) {
List beans =aadSaConfigDao.fetchBySaId(saId);if(!CollectionUtils.isEmpty(beans)) {return beans.get(0);
}return null;
}/*** 新增记录*/@Transactionalpublic voidcreate(SaDto dto) {//查询销售序列值,行锁select for update
Integer index =dslContext.select(aadIndexTable.INDEX).from(aadIndexTable)
.where(aadIndexTable.TABLE.eq("aad_sa_config").and(aadIndexTable.FIELD.eq("sa_id")))
.forUpdate()
.fetchOneInto(Integer.class);//填充销售ID为定长字段,5位长度
String saId = "SA" + String.format("%05d", index);
dslContext.insertInto(aadSaConfig)
.set(aadSaConfig.SA_ID, saId)//销售Id按规则自增
.set(aadSaConfig.STATUS, dto.getStatus())
.execute();//添加记录成功后需要将index加1
dslContext.update(aadIndexTable).set(aadIndexTable.INDEX, ++index)
.where(aadIndexTable.TABLE.eq("aad_sa_config").and(aadIndexTable.FIELD.eq("sa_id")))
.execute();
}/*** 更新记录*/
public voidupdate(SaDto dto) {
UpdateSetFirstStep updateRecord =dslContext.update(aadSaConfig);
UpdateSetMoreStep setRecord = null;if(StringUtils.isNotBlank(dto.getSaName())) {
setRecord=updateRecord.set(aadSaConfig.SA_NAME, dto.getSaName().toUpperCase());
}if(StringUtils.isNotBlank(dto.getStatus())) {
setRecord=updateRecord.set(aadSaConfig.STATUS, dto.getStatus());
}if(setRecord == null) {return;
}
setRecord.where(aadSaConfig.SA_ID.eq(dto.getSaId())).execute();
}/*** 删除记录*/
public voiddelete(String saId) {
dslContext.delete(aadSaConfig).where(aadSaConfig.SA_ID.eq(saId)).execute();
}/*** 根据销售名称查询销售信息
*@paramsaName
*@return
*/
public List>fetchSaByName(String saName){//查询指定的字段
Result> resultRecord =dslContext.select(aadSaConfig.SA_ID, aadSaConfig.SA_NAME)
.from(aadSaConfig)
.where(aadSaConfig.SA_NAME.like("%" + saName + "%"))
.fetch();
List> list = new ArrayList>();//获取查询出来的字段值
for(Record2record : resultRecord) {
Map item = new HashMap();
item.put("label", record.getValue(aadSaConfig.SA_NAME));
item.put("value", record.getValue(aadSaConfig.SA_ID));
list.add(item);
}returnlist;
}/*** 联表更新数据
*@paramdto*/
public voidupdatePos(PosDto dto) {/** 最初是想使用insert into select,但是jooq中只能整表复制,但我们只需要某几个字段
* 尝试过先insert,然后再update,但这样比较消耗性能
* 试了几次后发现最好还是先把所需数据查出来,再进行插入*/
//获取商户相关信息,赋值到门店上
RetailerDto retailer = dslContext.selectFrom(aadRetailerConfig).where(aadRetailerConfig.RETAILER_ID.eq(dto.getRetailerId())).fetchOneInto(RetailerDto.class);//新增数据
dslContext.insertInto(aadPosConfig)
.set(aadPosConfig.POS_ID, dto.getPosId())
.set(aadPosConfig.POS_NAME, dto.getPosName())
.set(aadPosConfig.RETAILER_ID, retailer.getRetailerId())
.set(aadPosConfig.RETAILER_NAME, retailer.getRetailerName())
.execute();
}
}
文章浏览阅读1w次。maven项目常用打包命令以及使用_maven打包命令
文章浏览阅读5.3k次。定义语法:public static URI create(String str)用例:URI uri = URI.create("http://java2s.com");_java.net.uri 转string
文章浏览阅读1.4k次。目录LNMP环境安装安装和配置 git安装 Composer安装 redisLaravel 项目安装拉取 github 上的 Laravel 项目代码安装依赖配置环境变量数据配置权限配置Nginx 配置elasticsearch0.安装JDK111.下载Elasticsearch72.下载完了解压压缩包3.移动目录4.新建一..._centos 7 laravel框架的.env
文章浏览阅读517次。北京时间2020年10月14日凌晨,苹果第二次秋季发布会成功落幕,会上发布了旗下搭载最新 iOS14 系统的 iPhone 12 系列智能手机和最新一代 HomePod mini 智能音箱,为了环保理念,苹果在此次发布会之后,官方商店在售 iPhone 系列所有产品均已不再标配 EarPods 有线耳机。因此购买了 iPhone 12 的小伙伴就需要自行配置耳机,而TWS真无线耳机凭借着..._android 耳机录音
文章浏览阅读2.7k次。题目地址:1003. 我要通过!(20)1. 字符串中必须仅有P, A, T这三种字符,不可以包含其它字符;2. 任意形如 xPATx 的字符串都可以获得“答案正确”,其中 x 或者是空字符串,或者是仅由字母 A 组成的字符串;3. 如果 aPbTc 是正确的,那么 aPbATca 也是正确的,其中 a, b, c 均或者是空字符串,或者是仅由字母 A 组成的字符串。_java实现1003
文章浏览阅读7.3k次。今天在公司问老大,公司的项目底层,是使用的TCP,因为可靠,自动断线重连,在底层都实现了,但是我记得TCP也会有掉包的问题,所以这文章就诞生了——关于TCP掉包的问题,TCP是基于不可靠的网络实现可靠的传输,肯定也会存在掉包的情况。 如果通信中发现缺少数据或者丢包,那么,最大的可能在于程序发送的过程或者接收的过程出现问题。 例如服务器给客户端发大量数据,Send的频率很高,_tcp的客户端发送报文给服务器,不产生丢包或网络阻塞,但是数据不一致是因为
文章浏览阅读8k次。导航:网站首页 >怎样用C语言编写数学公式 如何用C语言输入数学公式怎样用C语言编写数学公式 如何用C语言输入数学公式相关问题:匿名网友:1、C语言有现场的常用数学函数,所在函数库为math.h、stdlib.h。函数名及解释:int abs(int i) 返回整型参数i的绝对值double cabs(struct complex znum) 返回复数znum的绝对值double fabs(..._c语言定义公式
文章浏览阅读522次。第3章 数组和字符串编号标题难度
文章浏览阅读4.7k次,点赞9次,收藏44次。文章目录1.获取安装包地址并下载2.解压安装包3../configure配置4.make编译5.make install 安装6.测试1.获取安装包地址并下载下载源代码安装包文件,以 APACHE 服务为例,我们需要进入https://httpd.apache.org/找到httpd的软件包。如果想要在虚拟机中下载,则复制链接地址,然后使用 wget 链接地址 下载2.解压安装包使用 tar xvf 压缩包名字 将压缩包解压,解压后会在同级目录下出现一个以软件包为名字的文件夹,也可 -C 指_linux源代码编译安装
文章浏览阅读3.9w次,点赞8次,收藏29次。方式一: 利用FastJson 把对象转化为Map/** * * @MethodName: getUserInfoDataByUserId * @Description: 根据useId查询用户信息,封装成map key:属性名,value:属性值 * home.php?mod=space&uid=952169 userId 用户userId * @return */ public Map<String, String&_java 撖寡情頧柒ap
文章浏览阅读3.8w次,点赞43次,收藏96次。Vscode的相对路径读取问题及处理差异首先说一下vscode相对路径与一般编辑器的不同符号vscode一般的“./2.txt”相对于工作路径(.vscode文件夹所在的位置)相对于当前运行文件“2.txt”相对于工作路径相对于当前运行文件“/2.txt”相对于磁盘根目录相对于磁盘根目录问题处理案例:工作路径如下,执行文件为 readfi..._解决vscode 相对路径
文章浏览阅读922次。MySQL_alter table zhsq_yw_person drop birth