准备

实体

@Data
@Table(name = "task_apply")
@Entity
public class TaskApply {
@Id
@GeneratedValue
@Column(name = "apply_id")
private Long applyId; private Integer status; private SyncType type; @Column(name = "task_message")
private String taskMessage;
}

其中同步类型

package com.charles.enums

public enum SyncType {
/**
* 手动同步
*/
MANUAL("M", "手动同步"),
/**
* 任务同步
*/
SCHEDULED("S", "任务同步"); private final String value;
private final String text; SyncType(String value, String text) {
this.value = value;
this.text = text;
} public String text() {
return text;
} public String getValue() {
return value;
} public static SyncType fromValue(String type) {
for (SyncType value : SyncType.values()) {
if (value.equals(type)) {
return value;
}
}
return null;
}
}

枚举的转换器

import javax.persistence.AttributeConverter;

public class SyncTypeConverter implements AttributeConverter<SyncType, String> {

    @Override
public String convertToDatabaseColumn(SyncType e) {
if (e == null) {
return null;
}
return e.getValue();
} @Override
public SyncType convertToEntityAttribute(String value) {
if (value == null) {
return null;
}
return SyncType.fromValue(value);
}
}

修改

使用冒号传参

@Modifying
@Query("update TaskApply set status = :status where applyId = :applyId")
void updateStatusByApplyId(@Param("applyId") Long applyId, @Param("status") Integer status);

使用问号传参

@Modifying
@Query("update TaskApply set status = ?2 where applyId = ?1")
void updateStatusByApplyId(Long applyId, Integer status);

查询

返回指定列第1种写法

package com.charles.vo;

@Data
public class TaskMessageVO {
private Long applyId;
private String taskMessage;
} @Query("select new com.charles.vo.TaskMessageVO(applyId, taskMessage) from TaskApply where applyId in (:applyIds)")
List<TaskMessageVO> findTaskMessages(@Param("applyIds") List<Long> applyIds);

返回指定列第2种写法

@Query(nativeQuery = true, value =
"SELECT id as applyId, task_message as taskMessage FROM task_apply WHERE apply_id IN (:applyIds)")
List<Object> findTaskMessages(@Param("applyIds") List<Long> applyIds);

这种写法是nativeQuery,返回的结果中每个Object中返回的是一个数组,数组下标0对应的是applyId,下标1对应的是taskMessage。

查询单列

@Query("select distinct status from TaskApply where applyId in (:applyIds)")
List<Integer> findDistinctStatus(@Param("applyIds") List<Long> applyIds);

查询条件为常量

@Query("select applyId from TaskApply where type <> com.charles.enums.SyncType.MANUAL")
List<Long> findNotManualSyncApplyIds();

参考

最新文章

  1. [Q&amp;A] MySQL Error 1050(42S01): Table already exist
  2. iOS8后core location框架启动定位服务的步骤
  3. NGUI之渲染DrawCall的合并
  4. 为了让vi命令也可以使用vim的配置,需要修改 vi /etc/bashrc 增加一行 alias vi=&#39;vim&#39;此时,经过上面配置已经可以显示语法高亮了
  5. Checked Exception与Runtime Exception 的区别
  6. tomcat初识
  7. PHP冒泡排序,选择排序,插入排序
  8. jQuery.each(object, [callback])方法,用于处理json数组
  9. JS(移动端)自己封装移动端一些常用方法
  10. ubuntu16.04编译安装php7.2
  11. JS继承的一些见解
  12. java并发之ReentrantLock学习理解
  13. MVC-Razor视图
  14. Oracle 11g 单实例到单实例OGG同步实施文档-OGG initial load
  15. 《剑指offer》-二叉搜索树与双向链表
  16. ReentrantReadWriteLock
  17. 第1课 类型推导(1)_auto关键字
  18. Python之路(第十五篇)sys模块、json模块、pickle模块、shelve模块
  19. javascript公有静态成员
  20. Java File.separator

热门文章

  1. c#用于时间日期的类型:DateTime
  2. MFiX-DEM中的并行碰撞搜索
  3. deconv的弊端
  4. Linux下如何使用X86 CPU的GPIO
  5. 4-20mA转RS485模拟量采集模块是怎么工作的?
  6. Java学习的第三十七天
  7. xadmin开发后台管理系统常见问题
  8. K8S的Kafka监控(Prometheus+Grafana)
  9. 由python工作区导致的python代码能运行,但是PyCharm画红线的问题
  10. IDEA创建maven项目没有src/main/java目录问题解决