HibernateTemplate、HibernateDaoSupport两种方法实现增删改查Good(转)
Spring+Hibernate两种方法实现增删改查
首先,定义一个Customer的bean类,设置好Customer.hbm.xml文件。再定义好一个Dao接口。准备好一个jdbc.properties文件。
第一种方法:
在dao类中定义一个HibernateTemplate类的对象,用该对象调用HibernateTemplate模板封装好的方法,如下:
/***
* hibernateTemplate的转配模式
*/
public class CustomerDaoImpl implements CustomerDao {
// 设置hibernateTemplate属性
private HibernateTemplate hibernateTemplate; // 必须设置set方法
public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
this.hibernateTemplate = hibernateTemplate;
} // 插入方法
@Override
public void insert(Customer entity) {
hibernateTemplate.save(entity);
} // 删除方法(按照试题删除)
@Override
public void delete(Customer entity) {
hibernateTemplate.delete(entity); } // 删除方法,按id删除,该方法不成功
@Override
public void deleteById(int id) {
// hibernateTemplate.
} // 查询所有记录
@Override
public List<Customer> selectAll() {
// TODO Auto-generated method stub
List<Customer> entities = hibernateTemplate.find("from Customer");
return entities;
} // 按照id查找记录
@Override
public Customer selectById(int id) {
// TODO Auto-generated method stub
List<Customer> entitise = hibernateTemplate
.find("from Customer where id=" + id);
if (entitise.size() > 0) {
Customer entity = entitise.get(0);
return entity;
}
return null;
} // 更新方法
@Override
public void update(Customer entity) {
// TODO Auto-generated method stub
hibernateTemplate.update(entity);
} }
xml中的部分代码如下:
<!-- 分散配置 -->
<context:property-placeholder location="jdbc.properties" /> <!-- c3p0数据源 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<!-- 驱动程序 -->
<property name="driverClass">
<value>${jdbc.driverClass}</value>
</property> <!-- 连接的url地址 -->
<property name="jdbcUrl">
<value>${jdbc.url}</value>
</property> <!-- 连接的用户名 -->
<property name="user">
<value>${jdbc.user}</value>
</property> <!-- 连接的密码 -->
<property name="password">
<value>${jdbc.password}</value>
</property> <!-- 最大池数 -->
<property name="maxPoolSize">
<value>${c3p0.pool.max}</value>
</property> <!-- 最小池数 -->
<property name="minPoolSize">
<value>${c3p0.pool.min}</value>
</property>
<!-- 默认初始化的池数 -->
<property name="initialPoolSize">
<value>${c3p0.pool.init}</value>
</property>
</bean> <bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<!-- 设置数据源 -->
<property name="dataSource" ref="dataSource" />
<!-- 属性设置 -->
<property name="hibernateProperties">
<props>
<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
<prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
</props>
</property>
<!-- 映射文件配置 -->
<property name="mappingResources">
<list>
<value>cn/csdn/domain/Customer.hbm.xml</value>
</list>
</property> </bean> <span style="background-color: #ff0000;"><!-- hibernate模板 -->
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory" ref="sessionFactory" />
</bean></span> <!-- dao的操作的bean -->
<bean id="customerDaoImpl" class="cn.csdn.dao.CustomerDaoImpl">
<!-- 注入依赖模板 -->
<property name="hibernateTemplate" ref="hibernateTemplate" />
</bean>
第二种方法:
Dao实现类继承HibernateDaoSupport类,该类是抽象类,该类中有一个HibernateTemplate的属性,通过this.getHibernateTemplate()可获得一个HibernateTemplate类的对象。
Dao实现类中的代码如下:
/**
* 继承HibernateDaoSupport类,HibernateDaoSupport类中封装了一个hibernateTemplate变量
*/
public class CustomerDaoImpl1 extends HibernateDaoSupport implements
CustomerDao { // 添加记录
@Override
public void insert(Customer entity) {
this.getHibernateTemplate().save(entity);
} // 删除记录(按照实体删除)
@Override
public void delete(Customer entity) {
// TODO Auto-generated method stub
this.getHibernateTemplate().delete(entity); } // 删除记录(按id删除),不成功
//
@Override
public void deleteById(int id) {
// TODO Auto-generated method stub
// this.getHibernateTemplate().delete(entity);
} // 查询所有的记录
@Override
public List<Customer> selectAll() {
// TODO Auto-generated method stub
List<Customer> entities = this.getHibernateTemplate().find(
"from Customer");
return entities;
} // 按照id查找记录
@Override
public Customer selectById(int id) {
// TODO Auto-generated method stub
List<Customer> entities=this.getHibernateTemplate().find("from Customer where id="+id);
if(entities.size()>0){
Customer entity=entities.get(0);
return entity;
}
return null;
} // 更新的方法
@Override
public void update(Customer entity) {
// TODO Auto-generated method stub
this.getHibernateTemplate().update(entity);
} }
xml中的部分代码:
<!-- 分散配置 -->
<context:property-placeholder location="jdbc.properties" /> <!-- c3p0数据源 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<!-- 驱动程序 -->
<property name="driverClass">
<value>${jdbc.driverClass}</value>
</property> <!-- 连接的url地址 -->
<property name="jdbcUrl">
<value>${jdbc.url}</value>
</property> <!-- 连接的用户名 -->
<property name="user">
<value>${jdbc.user}</value>
</property> <!-- 连接的密码 -->
<property name="password">
<value>${jdbc.password}</value>
</property> <!-- 最大池数 -->
<property name="maxPoolSize">
<value>${c3p0.pool.max}</value>
</property> <!-- 最小池数 -->
<property name="minPoolSize">
<value>${c3p0.pool.min}</value>
</property>
<!-- 默认初始化的池数 -->
<property name="initialPoolSize">
<value>${c3p0.pool.init}</value>
</property>
</bean> <bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<!-- 设置数据源 -->
<property name="dataSource" ref="dataSource" />
<!-- 属性设置 -->
<property name="hibernateProperties">
<props>
<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
<prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
</props>
</property>
<!-- 映射文件配置 -->
<property name="mappingResources">
<list>
<value>cn/csdn/domain/Customer.hbm.xml</value>
</list>
</property> </bean> <!-- 设置HibernateDaoSupport抽象类-->
<bean id="hibernateDaoSupport"
class="org.springframework.orm.hibernate3.support.HibernateDaoSupport"
abstract="true">
<property name="sessionFactory" ref="sessionFactory" />
</bean> <!-- dao的操作的bean -->
<bean id="customerDaoImpl" class="cn.csdn.dao.CustomerDaoImpl1"
parent="hibernateDaoSupport" />
<bean id="adminDAO" class="com.haier.uhome.hr91.manager.dao.AdminDAO">
parent="hibernateDaoSupport"/>
或者如下:
<bean id="customerDaoImpl" class="cn.csdn.dao.CustomerDaoImpl1">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean> <bean id="adminDAO" class="com.haier.uhome.hr91.manager.dao.AdminDAO">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
HibernateTemplate、HibernateDaoSupport两种方法实现增删改查Good(转)的更多相关文章
- get,post,put,delete四种基础方法对应增删改查
PUT,DELETE,POST,GET四种基础方法对应增删改查 1.GET请求会向数据库发索取数据的请求,从而来获取信息,该请求就像数据库的select操作一样,只是用来查询一下数据,不会修改.增加数 ...
- Hibernate通过createSQLQuery( )方法实现增删改查
一.项目结构 二.hibernate核心配置文件: hibernate.cfg.xm <?xml version="1.0" encoding="UTF-8&q ...
- VS连接Access数据库--连接字符串及执行查询语句的方法(增删改查,用户名查重,根据用户获取密码查询)
ACCESS数据的连接及语句执行操作,不难,久不用会生疏,每次都要找资料,干脆自己整理下,记录下来,需要的时候,直接查看,提高效率.也供初学者参考 1.连接字符串 public static stri ...
- android 数据库的增删改查的另一种方式
老师笔记 # 3 Android下另外一种增删改查方式 1.创建一个帮助类的对象,调用getReadableDatabase方法,返回一个SqliteDatebase对象 2.使用Sq ...
- Day 18 :面向对象[基础,继承,组合]类的增删改查
有的人说,编程有3种范式: 1.面向过程:就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了. 2.面向函数:面向函数是面向过程的升级版,也就是把每个 ...
- Android下数据库操作——增删改查
Android下数据库第一种方式增删改查 1.创建一个帮助类的对象,调用getReadableDatabase方法,返回一个SqliteDatebase对象 2.使用SqliteDat ...
- SSHE框架整合(增删改查)
1.前期准备:jar包(c3p0.jdbc ,各个框架) web.xml文件:spring的 转码的,和Struts2的过滤器 <?xml version="1.0" e ...
- MVC——数据库增删改查(aspx)
MVC: V(View) :视图→就是页面的模板 C(Control): 控制器→客户主要面对的就是控制器, M(Model):模板→在模板里面主要就是写关于数据库的各种增删改查的方法 它们之间的关系 ...
- 【DRP】-Dao层常用功能代码:增删改查
本系列博客内容为:做DRP系统中Dao层常用功能. 该项目采用MVC架构 C(Controller)控制器,主要职责;1.取得表单参数:2.调用业务逻辑:3.转向页面 M(Model)模型,主要职责: ...
随机推荐
- Linux - 文件的压缩与归档
文件压缩 常用的压缩命令有 gzip.bzip2 等. gzip 命令 命令格式 gzip [ -acdfhlLnNrtvV19 ] [-S suffix] [ name ... ] 命令参数 -c ...
- Android应用源码基于安卓的校园二手交易系统客户端+服务端+数据库
该源码是校园二手交易系统应用带服务端,也是一个基于安卓和javaweb的校园二手交易系统,包括整套安卓客户端.javaweb服务端.mysql数据库,可以进行基本的列表显示帖子.显示帖子详情.用户注册 ...
- Eclipse Code Templates设置
从工作开始,经历了几个项目的开发,现在的项目一般都是一个团队共同开发,而每个人都有自己的编码习惯,为了统一格式,项目组在项目开发之前都会制定一系列的规范.俗话说约定优于配置,但是在执行过程中往往发现效 ...
- swift闭包传值
不知道原理,就知道这么用的,皮毛上的那一点. 寻思着把以前的项目改成swift的,结果了,,, 反向传值 一. //类似于OC中的typedef typealias sendValueClosure= ...
- 自定义DZLMoneyLabel
一.简介 由于父亲生病,好久没有更新博客了,今天10.1 国庆(应该说是昨天了,已经过了12点了),心血来潮自定义了一个小label.这个控件的难度并不大,也没有什么可以值得炫耀的技术点.写这个控件的 ...
- 20141014--判断语句switch case
1. switch case break(跳出) 距离break 最近的大括号,跳出这个大括号,执行大括号之后的命令 switch case 必须与 break 一同使用. 分别输入月份 几号 输出是 ...
- Linux小白最佳实践:《超容易的Linux系统管理入门书》(连载五)Linux系统的对话方式
本篇是Linux小白最佳实践第5篇,目的就是让白菜们了解Linux进程之间是如何对话的.之前连载的几篇,在微信上引起了很多的反响,有人也反映图多文字少,感觉没有干货.本篇选了大部分是实战讲解的&quo ...
- C/C++中浮点数格式学习——以IEEE75432位单精度为例
这是浮点数的通常表示形式,在IEEE754中,单精度浮点数有如下形式: 位单精度 个比特存储. 位长 至23偏正值(实际的指数大小+127) 至0位编号(从右边开始为0) S为符号位,Exp为指数字, ...
- System.UnauthorizedAccessException: 拒绝访问 temp 目录。用来运行 XmlSerializer 的标识“NT AUTHORITY\NETWORK SERVICE”没有访问 temp 目录的足够权限。CodeDom 将使用进程正在使用的用户帐户进行编译,这样,如
解决方案:IIS的应用程序池权限不够,应用程序给localsystem账号权限即可. 以客户的服务器系统2003sp2为例,修改步骤如下: 控制面板---管理工具--Internet 信息服务(IIS ...
- maven增量编译
最近由于不清楚maven(2.2.x)增量编译的机制,导致应用出现了一个当时觉得非常诡异的一个问题.先描述一下问题. 背景是应用A有一个公用的base包,版本为1.6.6-SNAPSHOT,应 ...