关于hibernate架构的使用经验

1.当需要在实体类添加一个变量且对应的数据库表中没有该列,需要创建一个新的类,该类包含原本类中的属性以 及新添加的属性,查询的结果用新的实体类进行接收;
例子如下:
select *,sum(price) money from order;
return super.getListBySql(Doctor(新的实体类).class, sql);

  1. 在hibernate中需要加入参数时,切记在参数为String类型的值前和后边都加入引号。使得值可以被引号括起来,要不然会报错,具体错误不记得了。
    示例: sql+=" and u.registerTime between ‘"+startTime+"’ and ‘"+endTime+"’ ";

  2. 当使用mysql数据库时,要想自动插入数据,不光要在数据库的id属性设置自增长还要在实体类中的id上添加
    @GeneratedValue(strategy = GenerationType.IDENTITY)//数据库本地生成策略
    @GeneratedValue(generator = “system-uuid”) //uuid方式生成
    @GenericGenerator(name = “system-uuid”, strategy = “uuid”)
    根据个人情况看需要哪种

  3. 当你想用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 标 签 来 展 示 : &lt; c : o u t v a l u e = &quot; {map[&#x27;data&#x27;]} 可以用c标签来展示:&lt;c:out value=&quot; 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;"> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b><c:out value="${patientInfo.pname}"/></b> &nbsp;&nbsp;&nbsp;&nbsp;<b> <c:out value="${patientInfo.ptel}"/></b> </div> <div style="float:left;width:75%;line-height:18px;margin-left:10px;">&nbsp;&nbsp;&nbsp;&nbsp;<c:if test="${patientInfo.statu==1}"><font style="color:rgb(255, 100, 1);background:#ffd6cc;">默认</font></c:if>&nbsp;&nbsp;<c:out value="${patientInfo.procityarea}"/>&nbsp;&nbsp;&nbsp;&nbsp;<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});">&nbsp;&nbsp;&nbsp;&nbsp;<font style="color:#00bb77;">编辑</font> </a> </div> </li> </c:forEach>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Hibernate使用技巧汇总<br><br>1.两种配置文件: <br> A.hibernate.cfg.xml 和 B.hibernate.properties <br> A中可含映射文件的配置,而B中hard codes加映射文件。 <br> A。Configuration config=new Configuration().config(); <br> B. Configuration config=new Configuration(); <br> config.addClass(TUser.class); <br><br>2.你不必一定用hibernate.cfg.xml或hibernate.properties这两文件名, <br> 你也不一定非得把配置文件放在Classes下, <br> File file=new File("c:\\sample\\myhibernate.xml"); <br> Configuration config=new Configuration().config(file); <br>3. session.Flush() <br> 强制数据库立即同步,当用事务时,不必用flush,事务提交自动调用flush <br> 在session关闭时也会调用flush <br><br>4. Hibernate总是使用对象类型作为字段类型 <br>5. XDoclet专门建立了hibernate doclet,就是在java代码上加上一些 <br> java docTag,后来再让XDoclet分析该java代码,生成映射文件; <br>6.HQL子句本身大小写无关,但是其中出现的类名和属性名必须注意大小写区分。 <br>7.关系: <br> Constrained : 约束,表明主控表的主键上是否存在一个外键(foreigh key) <br> 对其进行约束。 <br> property-ref:关联类中用于与主控类相关联的属性名,默认为关联类的主键属性名 <br> 单向一对多需在一方配置,双向一对多需在双方进行配置 <br>8.lazy=false:被动方的记录由hibernate负责记取,之后存放在主控方指定的 <br> Collection类型属性中 <br><br>...............<br><br><br>...............<br><br><br>27.Spring的参数化事务管理功能相当强大,笔者建议在基于Spring Framework的应用 <br>开发中,尽量使用容器管理事务,以获得数据逻辑代码的最佳可读性。 <br> <br>public class UserDAO extends HibernateDaoSupport implements IUserDAO <br>{ <br>public void insertUser(User user) { <br>getHibernateTemplate().saveOrUpdate(user); <br>} <br>} <br><br> 上面的UserDAO实现了自定义的IUserDAO接口,并扩展了抽象类: <br>HibernateDaoSupport <br>HibernateSupport实现了HibernateTemplate和SessionFactory实例的关联。 <br>HibernateTemplate对Hibernate Session操作进行了封装,而 <br>HibernateTemplate.execute方法则是一封装机制的核心 <br> *在spring的配置文件里,移植了整个hibernate.cfg.xml的内容。<br>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值