HibernateDaoSupport的 [ 新增 ] 方法总结
二. 新增===========================================
1. Serializable save(Object entity)
参数: entity: 要插入到数据库的POJO对象
返回: Serializable: 序列化对象, 即主键
功能: 新增一条记录
Action: // 新增 public String insert() { // 获取表单数据, 模型驱动 int count = departmentService.insert(department); // 注意: 返回值是序列化对象, 是主键的值, 不是插入的记录条数 if (count > 0) { return "insert"; } return "index"; }
DAO:
public int insert(Department department) {
return (Integer) this.getHibernateTemplate().save(department);
}
2. Serializable save(String entityName, Object entity) , 和 1 一样, 建议用 1 就好
参数: entityName: POJO类的名字 ; entity: 要插入到数据库的POJO对象
返回: Serializable: 序列化对象, 即主键
功能: 新增一条记录
Action:
// 新增
public String insert() {
// 获取表单数据, 模型驱动
int count = departmentService.insert(Department.class.getName(), department);
if (count > 0) {
return "insert";
}
return "index";
}
DAO:
public int insert(String entityName, Department department) {
return (Integer) this.getHibernateTemplate().save(entityName, department);
}
3. void saveOrUpdate(Object entity)
参数: entity: 插入的POJO对象
返回: 没有返回值
功能: 保存或者更新对象, 和save方法的区别, 如果不确定POJO对象的状态, 可以使用这个方法, 如果确定了, 可以使用save或者update方法,
save一个持久态和update一个游离态都是有问题的.
Action:
public String saveOrUpdate() {
departmentService.saveOrUpdate(this.department);
return "saveOrUpdate";
}
DAO:
public void saveOrUpdate(Department department) {
this.getHibernateTemplate().saveOrUpdate(department);
}
重载方法: saveOrUpdate(String entityName, Object entity)
4. void saveOrUpdateAll(Collection entities)
参数: entities: 要保存的POJO集合
返回: 没有返回值
功能: 批量保存数据
Action:
// 批量保存
public String saveOrUpdateAll() {
// 假设这里有三个POJO对象, 现在要把它们批量保存到数据库, 静态数据
Department dept1 = new Department("部门1", "地址1");
Department dept2 = new Department("部门2", "地址2");
Department dept3 = new Department("部门3", "地址3");
// 组合成List集合
List<Department> depts = new ArrayList<Department>();
depts.add(dept1);
depts.add(dept2);
depts.add(dept3);
// 调用方法批量保存
departmentService.saveOrUpdateAll(depts);
// 跳转
return "saveOrUpdateAll";
}
DAO:
public void saveOrUpdateAll(List<Department> depts) {
this.getHibernateTemplate().saveOrUpdateAll(depts); // 底层也是使用for循环来循环插入的
}