spring boot 增删改查

spring boot spring

1、增删改查sql

一、增 CaInfoRepository.save()(自带)数据库

public interface CaInfoRepository extends JpaRepository<CaInfo, Long>{}

(1)当添加的数据id为空时添加一条数据到数据库json

(2)当有id值时,修改数据库中的数据ide

 

二、改(删除和修改时须要加上注解 @Modifying   ,与 @Transactional搭配使用)ui

@Modifying
@Query("UPDATE CaInfoSET detail_json=?1,dmp58building_id=?2,state=?3  where id=?4")
void updateXXXX(String detail_json, String dmp58building_id, Integer state,Long id);

三、查this

自带.net

CaInfo getFirstByQihooShopId(String shop_id);

自定义1(原生 ca_info表名) ci

@Query(value = "SELECT *  from ca_info  WHERE id=(SELECT MIN(id) from ca_info WHERE state =?1 )",nativeQuery = true)
ShopInfo getFirstByState(Integer state);

自定义2(表对应的实体 caInfo)get

@Query("SELECT * from caInfo WHERE id=?1")
ShopInfo getById(Long id);

带in的查询 需绑定参数 

@Query(value = "SELECT m.name trademark,t.name from car_info t LEFT JOIN car_info m on m.id=t.parent_id WHERE t.id in (:ids)",nativeQuery = true)
List<Object[]> findTrademarkAndCarNameByIds(@Param("ids")List<String> ids);

四、补充1

原本是想反回list<map>来着结果报错,用List<Object[]>来代替便可

@Query("select distinct projectId, projectName from ShopInfo")
List<Object[]> getProjectNameAndIdList();

实体类例子 须要加上@Entity注解, @Id @GeneratedValue主键自增,抽象类Serializable

@Entity
public class Info  implements Serializable {
    @Id
    @GeneratedValue
    private Long id;
    @Column
    private String projectName;
    @Column
    private String shopName;
    @Column
    private String position;
    @Column
    private Integer state;

    public  Info (){

    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getProjectName() {
        return projectName;
    }

    public void setProjectName(String projectName) {
        this.projectName = projectName;
    }

    public String getShopName() {
        return shopName;
    }

    public void setShopName(String shopName) {
        this.shopName = shopName;
    }

    public String getPosition() {
        return position;
    }

    public void setPosition(String position) {
        this.position = position;
    }

   
    public Integer getState() {
        return state;
    }

    public void setState(Integer state) {
        this.state = state;
    }

   

}

补充2

/**
     * 动态sql,分页
     */
    private Page<CarInfo> queryCarInfo(Integer brandId,Integer trademark, Integer trademark2,Integer page,Integer pageSize) {
        Specification<CarInfo> specification = new Specification<CarInfo>() {
            @Override
            public Predicate toPredicate(Root<CarInfo> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
                List<Predicate> predicates = new ArrayList<>();
                Path<Integer> id = root.get("id");
                Path<Integer> depth = root.get("depth");          
                Path<Integer> parentId = root.get("parentId");
                predicates.add(criteriaBuilder.equal(depth, 3));
                if (!StringUtils.isEmpty(brandId)) {
                    predicates.add(criteriaBuilder.equal(id, brandId));
                }            
                if (!StringUtils.isEmpty(trademark2)) {
                    predicates.add(criteriaBuilder.equal(parentId, trademark2));
                }
                // in使用
                if (!StringUtils.isEmpty(trademark) && StringUtils.isEmpty(trademark2)) {
                    List<Long> trademark2Ids=carInfoRepository.findBrandIdsByParentId(trademark);
                    CriteriaBuilder.In<Integer> in = criteriaBuilder.in(parentId.as(Integer.class));
                    for (Long pp : trademark2Ids) {
                        in.value(pp.intValue());
                    }
                    predicates.add(in);
                }
                Predicate and = criteriaBuilder.and(predicates.toArray(new Predicate[predicates.size()]));
                return and;
            }
        };

        Pageable pageable = new PageRequest(page-1, pageSize);
        Page<CarInfo> all = carInfoRepository.findAll(specification, pageable);
        return all;
    }
相关文章
相关标签/搜索