嘘~ 正在从服务器偷取页面 . . .

查询数据系列问题


查询数据系列问题

使用过的查询方法-

fetchDate

JsonObject fetchData = detailS.fetchData(DetailDao, Detail.class,
				new CustomFormatRow<Detail>() {
					@Override
					public void formatRow(Detail detail, SearchRow row) {}
                    }

fetchList

List<Proplan> proplanlist = proplanS.fetchList(proplanDao, Proplan.class);
Proplan proplan = null;
if(proplanlist!=null && proplanlist.size()==1) {
proplan  = proplanlist.get(0);
	}
    if(proplan!=null) {
		}

findOne

for (int i = 0; i < selectRows.size(); i++) {
DxRecord dxRecord2 = dxRecordDao.findOne(selectRows.get(i));
    }
CoatingPlan paintingPlan = planService.findOne(dxDetail.getProplanid());
DxDetail undetail = dxuncoilDao.findOne(t.getDxdetailid());

自定义方法

@Query(value="SELECT beizhu FROM upcoiler WHERE gunum = ?1 LIMIT 1 ",nativeQuery=true)
	String getSxsjrecord(String rzgunum);

String sxsjbeizhu = sxproductDetailDao.getSxsjrecord(detail.getRzgunum());
				row.add("sxsjrecord", sxsjbeizhu);
public DxRecord findByGunum(String gunum) {
		return dxDao.findByGunum(gunum);

DxRecord dxRecord = dxRecordService.findByGunum(t.getDxgunum());

在lygz报表中出现的问题

  • 在进行从plan里筛选数据时,第一次写的是用findOne(id)进行数据查询,但是plan里边的id对应的是生产明细中的proplanid,而findOne()这个方法是要通过主键进行筛选,很显然这里不能调用findOne()方法。

解决方式

  • 由于所出现的问题,所以在lygz报表中调用了查询类的fetchList方法来取出相对应的数据。
  • PS: 也可以通过Dao层的查询语句来进行数据的获取,要注意在Dao里拼写Sql语句过多会影响数据的查询速度。
    fetchDate返回的数据为JSON格式。

拓展

  • findById 通过id查找,没查询到就返回null
  • getOne 通过id查找 采用懒加载 使用时才真正去查库.若id未查询到会异常EntityNotFoundException.
  • findOne所查询的结果必须是只包含一条结果,否则会报如下异常
    org.springframework.dao.IncorrectResultSizeDataAccessException: query did not return a unique result: 2
  • findAllById 通过id查询多个 若未查询到则返回空集合
  • findAllById 通过id查询多个 若未查询到则返回空集合
  • save 保存 需要配置主键自增策略 @Transactional注解要去掉不然会回滚数据添加失败!
  • delete 删除 删除没有返回值
  • deleteALL 删除所有数据 会执行两条sql 先查出所有id 然后根据id一条条的删除.慎用避免使用无参清空数据
  • count 查询数量 无参的方法会返回所有的记录

文章作者: 张纯
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 张纯 !
  目录