当前位置: 首页 > news >正文

Springboot使用QueryDsl实现融合数据查询

Springboot+QueryDsl技术

1、添加依赖
<!--基于JPA-->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!--QueryDSL支持-->
<dependency><groupId>com.querydsl</groupId><artifactId>querydsl-apt</artifactId><scope>provided</scope>
</dependency>
<!--QueryDSL支持-->
<dependency><groupId>com.querydsl</groupId><artifactId>querydsl-jpa</artifactId>
</dependency>
2、添加配置
@Configuration
public class PeopleQueryConfig {@Beanpublic JPAQueryFactory jpaQuery(EntityManager entityManager) {return new JPAQueryFactory(entityManager);}
}
3、添加实体类
@Data
@Entity
@Table(name = "t_msg_log")
public class MsgLog extends PkUUID implements Serializable {private static final long serialVersionUID = -1479947068453421077L;@Column(name = "mobile", length = 16)private String mobile;@Column(name = "openid", length = 64)private String openid;@Column(name = "tsrname", length = 64)private String tsrname;@Column(name = "msg_direction", length = 2)@Convert(converter = MsgDirectionConverter.class)private MsgDirection msgDirection;@Column(name = "msg_type", length = 16)@Enumerated(EnumType.STRING)private MsgType msgType;@Column(name = "msg_channel", length = 2)@Convert(converter = MsgChannelConverter.class)private MsgChannel msgChannel;@Lob@Column(name = "msg_content")private String msgContent;@Column(name = "is_passive")private Boolean isPassive;@Column(name = "status", length = 2)@Convert(converter = MsgStatusConverter.class)private MsgStatus status;@Column(name = "send_time")private Date sendTime;@Column(name = "schedule_flag", length = 2)@Convert(converter = ScheduleFlagConverter.class)private ScheduleFlag scheduleFlag;@Column(name = "src_msg_id")private String srcMsgId;/*** enum*/public enum MsgType {text, image, video, voice, news, link, template, location}@RequiredArgsConstructorpublic enum MsgDirection implements ValuedEnum<String> {User2Agent("0"), Agent2User("1");@Getterprivate final String value;}@RequiredArgsConstructorpublic enum MsgChannel implements ValuedEnum<String> {SMS("0"), WECHAT("1");@Getterprivate final String value;}@RequiredArgsConstructorpublic enum MsgStatus implements ValuedEnum<String> {Success("1"), Failure("-1");@Getterprivate final String value;}@RequiredArgsConstructorpublic enum ScheduleFlag implements ValuedEnum<String> {ScheduledMsg("0"), InstantMsg("1");@Getterprivate final String value;}}
4、JPA-DAO类

DAO 类继承QueryDslPredicateExecutor

@Repository
public interface MsgLogRepository extends JpaRepository<MsgLog,String>,QueryDslPredicateExecutor<MsgLog>{}
5、Controller
@RestController
@RequestMapping("/msgLog/")
public class MsgLogController {private static final Logger LOGGER = LoggerFactory.getLogger(MsgLogController.class);@Autowiredprivate MsgLogRepository msgLogRepository;/*** 根据条件查询回话内容* @param predicate* @return*/@RequestMapping(value = "list")public List<MsgLogResp> list(@QuerydslPredicate(root = MsgLog.class) Predicate predicate){Iterable<MsgLog> msgLogs = msgLogRepository.findAll(predicate);LOGGER.info("msgLogs = "+ JsonUtil.toJson(msgLogs));List<MsgLog> msgLogList = new ArrayList<>();msgLogs.forEach((MsgLog msgLog)-> msgLogList.add(msgLog));return msgLogList.stream().map(new Function<MsgLog, MsgLogResp>() {@Nullable@Overridepublic MsgLogResp apply(@Nullable MsgLog msgLog) {return new MsgLogResp(msgLog);}}).collect(Collectors.toList());}}
http://www.lryc.cn/news/135380.html

相关文章:

  • 解决方案 | 电子签打通消费电子行业数智化经营通路
  • JVM理论知识
  • idea - 报错 Mybatis提示Tag name expected的问题< 小于号 无法识别
  • 合宙Air724UG LuatOS-Air LVGL API--对象
  • Java将PDF文件转为Word文档
  • vite创建项目命令
  • 解决Pandas KeyError: “None of [Index([...])] are in the [columns]“问题
  • 前端加springboot实现Web Socket连接通讯以及测试流程(包括后端实现心跳检测)
  • node使用高版本的oracledb导致连接oracle的Error: NJS-138异常
  • RabbitMQ手动签收消息
  • Unity 3d角色展示脚本(旋转 平移 缩放)展示界面
  • Spring Boot 将 Word 转换为 PDF
  • 【PHP面试题82】system和exec是用来做什么的?有什么区别
  • 05-微信小程序常用组件-表单组件
  • Lucky player —— Java 项目(Spring Boot)
  • ios 声网agora 音视频直播场景下的集成总结
  • mysql 、sql server 临时表、表变量、
  • 15. Canvas制作汽车油耗仪表盘
  • 解决git上传远程仓库时的最大文件大小限制
  • Midjourney API 国内申请及对接方式
  • 第一章 文件的输入和输出
  • java面试基础 -- 深克隆 浅克隆
  • 网络安全在医疗行业中的重要性
  • elemenPlus ElMessage 字符串如何换行问题
  • Linux socket网络编程
  • 【广州华锐互动】牲畜养殖VR模拟实操系统为传统教育注入新的生命力
  • JavaScript基础(Dom操作)
  • .NET6.0 System.Drawing.Common 通用解决办法
  • k8s ingress (二)
  • 如何实现element UI中table操作栏更多按钮的展示与折叠?