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循环来循环插入的
	}

 

posted @ 2017-05-14 18:07  半生戎马,共话桑麻、  阅读(446)  评论(0)    收藏  举报
levels of contents