HibenateDemo.java 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. package com.yihu.ehr.basic.hibernate;
  2. import com.yihu.jw.restmodel.web.Envelop;
  3. import com.yihu.jw.restmodel.web.MixEnvelop;
  4. import com.yihu.jw.rm.hospital.BaseHospitalRequestMapping;
  5. import com.yihu.jw.util.date.DateUtil;
  6. import org.apache.commons.collections.map.HashedMap;
  7. import org.apache.commons.lang3.StringUtils;
  8. import org.springframework.beans.factory.annotation.Autowired;
  9. import org.springframework.stereotype.Component;
  10. import java.util.List;
  11. import java.util.Map;
  12. /**
  13. * Created by Trick on 2019/12/10.
  14. */
  15. @Component
  16. public class HibenateDemo {
  17. @Autowired
  18. private HibenateUtils hibenateUtils;
  19. /**
  20. * 特别注意,由于oracle 大小写不明感,表别名需要指定大小写(驼峰)的话需要加双引号
  21. * @param id
  22. * @param name
  23. * @param createTime
  24. * @param page
  25. * @param size
  26. * @return
  27. */
  28. public Envelop findDoctorInfo(String id, String name, String createTime, Integer page, Integer size){
  29. String sqlTotal ="SELECT " +
  30. " COUNT(1) AS \"total\" " +
  31. " FROM " +
  32. " base_doctor d " +
  33. " JOIN base_doctor_hospital h ON d.id = h.doctor_code " +
  34. " WHERE " +
  35. " 1 = 1";
  36. Map<String,Object> params = new HashedMap();
  37. if(StringUtils.isNotBlank(id)){
  38. sqlTotal+=" AND d.id =:id";
  39. params.put("id",id);
  40. }
  41. if(StringUtils.isNotBlank(name)){
  42. sqlTotal+=" AND d.name =:name";
  43. params.put("name",name);
  44. }
  45. if(StringUtils.isNotBlank(createTime)){
  46. sqlTotal+=" AND d.create_time >:createTime";
  47. params.put("createTime", DateUtil.stringToDate(createTime,"yyyy-MM-dd"));
  48. }
  49. Long count = 0L;
  50. List<Map<String,Object>> total = hibenateUtils.createSQLQuery(sqlTotal,params);
  51. if(total!=null){
  52. //mysql 与 Oracle 聚合函数返回类型不一致,需要判断装换
  53. count = hibenateUtils.objTransformLong(total.get(0).get("total"));
  54. }
  55. String sql ="SELECT " +
  56. " d.id AS \"id\", " +
  57. " d.NAME AS \"name\"," +
  58. " h.dept_name AS \"deptName\"" +
  59. " FROM " +
  60. " base_doctor d " +
  61. " JOIN base_doctor_hospital h ON d.id = h.doctor_code " +
  62. " WHERE " +
  63. " 1 = 1 ";
  64. if(StringUtils.isNotBlank(id)){
  65. sql+=" AND d.id =:id";
  66. }
  67. if(StringUtils.isNotBlank(name)){
  68. sql+=" AND d.name =:name";
  69. }
  70. if(StringUtils.isNotBlank(createTime)){
  71. sql+=" AND d.create_time >:createTime";
  72. }
  73. List<Map<String,Object>> list = hibenateUtils.createSQLQuery(sql,params,page,size);
  74. return MixEnvelop.getSuccessListWithPage(BaseHospitalRequestMapping.Prescription.api_success, list, page, size, count);
  75. }
  76. }