JPA使用
JPA复合主键使用
- 实体类(存在多个主键)
import lombok.Data;
import javax.persistence.*;
import java.io.Serializable;
@Data
@Table(name = YGGX.TABLE_NAME)
@Entity
@IdClass(com.southgis.ibase.entity.YGGX.class)
public class YGGX implements Serializable {
public static final String TABLE_NAME = "YGGX";
@Id
@Column(name = "STID1")
private String STID1;
@Id
@Column(name = "STID2")
private String STID2;
@Column(name = "GX")
private String GX;
}
- 需要一个中间类
import lombok.Data;
import java.io.Serializable;
@Data
public class YGGXInfo implements Serializable{
private String STID1;
private String STID2;
}
- Dao层
import com.southgis.ibase.entity.YGGX;
import com.southgis.ibase.test.YGGXInfo;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.stereotype.Repository;
@Repository(IYggxDao.DAO_BEAN_NAME)
public interface IYggxDao extends JpaRepository<YGGX,YGGXInfo>, JpaSpecificationExecutor<YGGX>{
public static final String DAO_BEAN_NAME = "yggxDao";
}
大字段使用
import org.hibernate.annotations.Type;
import javax.persistence.Lob;
/**
* 图片转base64存储
*/
@Type(type = "org.hibernate.type.TextType")
@Lob
@Column(name="BASEURL")
@Comment("图片转base64存储")
private String baseUrl;
动态查询
分页排序动态查询示例
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.domain.Specification;
page = (null == page || page < 1) ? 0 : (page - 1);
rows = (null == rows || rows <= 0) ? 5 : rows;
Sort sort = Sort.by(Sort.Direction.ASC,"sort");
PageRequest pageRequest = PageRequest.of(page,rows,sort);
Specification<MapLibConfig> specification = new Specification<MapLibConfig>() {
@Override
public Predicate toPredicate(Root<MapLibConfig> root, CriteriaQuery<?> query, CriteriaBuilder criteriaBuilder) {
List<Predicate> predicatesList = new ArrayList<>();
if(!CheckUtil.isNullorEmpty(name)){
final String nameTemp = "%" + name + "%";
Predicate namePredicate = criteriaBuilder.like(root.get("name"),nameTemp);
predicatesList.add(namePredicate);
}
if(!CheckUtil.isNullorEmpty(ridListTemp)){
Predicate ridsPredicate = root.get("libRid").in(ridListTemp);
predicatesList.add(ridsPredicate);
}
Predicate[] predicates = new Predicate[predicatesList.size()];
return criteriaBuilder.and(predicatesList.toArray(predicates));
}
};
Page<MapLibConfig> pageTemp = mapLibConfigDao.findAll(specification,pageRequest);
条件拼接
//root填充的key == 实体类属性名
- 模糊查询
final String nameTemp = "%" + name + "%";
Predicate namePredicate = criteriaBuilder.like(root.get("name"),nameTemp);
- in查询
List<String> ridListTemp = new ArrayList();
Predicate ridsPredicate = root.get("libRid").in(ridListTemp);
Date格式化成字符串
import com.fasterxml.jackson.annotation.JsonFormat;
/***
* 创建时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。