1.当需要在实体类添加一个变量且对应的数据库表中没有该列,需要创建一个新的类,该类包含原本类中的属性以 及新添加的属性,查询的结果用新的实体类进行接收;
例子如下:
select *,sum(price) money from order;
return super.getListBySql(Doctor(新的实体类).class, sql);
-
在hibernate中需要加入参数时,切记在参数为String类型的值前和后边都加入引号。使得值可以被引号括起来,要不然会报错,具体错误不记得了。
示例: sql+=" and u.registerTime between ‘"+startTime+"’ and ‘"+endTime+"’ "; -
当使用mysql数据库时,要想自动插入数据,不光要在数据库的id属性设置自增长还要在实体类中的id上添加
@GeneratedValue(strategy = GenerationType.IDENTITY)//数据库本地生成策略
@GeneratedValue(generator = “system-uuid”) //uuid方式生成
@GenericGenerator(name = “system-uuid”, strategy = “uuid”)
根据个人情况看需要哪种 -
当你想用hibernate插入时间的时候,报错,就可以试着将生成的new Date()对象进行时间格式化,转化为规定的时间格式并转换成String,然后再往数据库中存
示例: SimpleDateFormat formatter = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
String dateString = formatter.format(new Date());
5.当你在action层也就是controller层想要跳转到页面,使用 modelAndView时,若传入对象还好,传入map的话,若出现页面显示不出传过去的数据,你可以试着将map放入到request作用域中。本人亲测有效。
在页面显示map中的值: m a p [ ′ d a t a ′ ] 可 以 用 c 标 签 来 展 示 : < c : o u t v a l u e = " {map['data']} 可以用c标签来展示:<c:out value=" map[′data′]可以用c标签来展示:<c:outvalue="{map[‘name’]}"/>
map 为你从后台传过来的map的名字 (new ModelAndView(“页面地址”,map))此map的值是自己创建的map的名字,后台用哪个名字,页面就得对应,【‘’】中是填写map中的键,通过键来获取对应的值。若果对应的是list可以用c标签进行遍历取值即可。
示例:<c:forEach items="${map['data']}" var="patientInfo" varStatus="sta"> <li style="height:80px;line-height:10px;"> <div style="width:100%;height:30px;line-height:5px;"> <b><c:out value="${patientInfo.pname}"/></b> <b> <c:out value="${patientInfo.ptel}"/></b> </div> <div style="float:left;width:75%;line-height:18px;margin-left:10px;"> <c:if test="${patientInfo.statu==1}"><font style="color:rgb(255, 100, 1);background:#ffd6cc;">默认</font></c:if> <c:out value="${patientInfo.procityarea}"/> <c:out value="${patientInfo.address}"/></div> <div style="border-left:1px solid;border-color:#808080;float:top;width:20%;height:40px;"> <a onclick="updateAddress(${patientInfo.id});"> <font style="color:#00bb77;">编辑</font> </a> </div> </li> </c:forEach>