-----------------------------------------------------dao代码--------------------------------------------------------------------------
//保存用户
public void save(List<User> users) {
for(User user:users)
{
this.getHibernateTemplate().persist(user);//这里也可以使用save但要注意使用persist会生成一张hibernate_unique_key表,而save方法不会。
}
System.out.println("------------------------------");
}
---------------------------------------------------------------User.hbm.xml-----------------------------------------------------------------------
<hibernate-mapping>
<class table="user" name="model.User">
<!-- 配置二级缓存 -->
<!--usage是缓存策略,read-only是user类是不会修改的,只读的。read-write是可以读写的-->
<cache usage="read-write"/>
<!-- unsaved-value="-1" 这个属性是用来判断是update或者save的。调用saveOrUpdate()方法时候用到 -->
<id name="id" column="id">
<generator class="hilo"></generator><!-- 这里主键生成方式不能用native,因为mysql会使用自增长,会立即更新数据库,就不会批量更新数据库所以使用高低位的主键策略-->
</id>
<property name="userName" column="userName" not-null="true"/>
<property name="passWord" column="passWord" not-null="true"/>
</class>
</hibernate-mapping>
--------------------------------------------------------hibernate生成的sql语句--------------------------------------------------------
------------------------------//这个本应该在insert语句之后执行,但是由于批量更新所以第一个执行了
Hibernate:
insert
into
user
(userName, passWord, id)
values
(?, ?, ?)
Hibernate:
insert
into
user
(userName, passWord, id)
values
(?, ?, ?)
Hibernate:
insert
into
user
(userName, passWord, id)
values
(?, ?, ?)
-----------------------------------批量更新---------------------------------------------
public void update(){
this.getHibernateTemplate.execute(new HibernateCallBack()
{
public Object doInHibernate(Session session){
Query query = session.createQuery("Update User u set u.userName=:username");
query.setString("username","test1");
query.executeUpdate();
//把User表所有记录的userName更新为test1
}
});
}