spring对数据库访问的支持:
1、对DAO提供以下支持:
一致的异常处理DataAccessException
一致的DAO抽象类DaoSupport、Template
2、整合JDBC(
定义数据库连接池dataSource;
不继承JdbcDaoSupport类时,手动在xml文件中将dataSource属性引入到访问数据库bean组件,在DaoImp类中给JdbcTemplate注入dataSource后使用;
继承JdbcDaoSupport类,可直接使用JdbcTemplate)
使用的API:
jdbcDaoSupport------用于提供编写DAO组件的支持
jdbcTemplate--------用于增删改查操作
update()------------增删改操作
query()、queryForObject()、queryForInt等-----查询操作
execute()-----------其他语句,如:建表、修改表结构语句
其他操作------------批处理、返回自动增长主键值
XML配置:
定义连接池<bean id="dataSource"/>-------->将dataSource注入给所有DAO组件
例子:
---》导入架包:commons-dbcp.jar连接池、commons-collections.jar、commons-pool.jar(连接池组件:管理connection对象的创建、销毁和控制其数量)
---》创建数据库
---》在applicationContext.xml中配置连接池(dataSource以<bean>组件的形式配置):包括连接池的定义 + 属性注入到调用bean组件
注意:只能写dataSource ,别的名字不行
<bean id="jdbcUserDao" class="JdbcUserDao">
<property name="dataSource" ref="dataSource"> </property>
</bean>
---》接口UserDao的实现类(此类需要访问数据库)中注入dataSource连接池:
1、不继承JdbcDaoSupport类的实现方法(用set方法注入dataSource):
public class JdbcUserDao implements UserDao{
private JdbcTemplate template;
public void setDataSource(DataSource dataSource){
template = new JdbcTemplate(dataSource);
}
public void save(User user){
String sql="insert into d_user(email,name,password,code,time,ip) values(?,?,?,?,?,?)";
template.update(sql,new Object[]{user.getEmail(),....user.getIp()});
}
.
.
.
}
<bean id="jdbcUserDao" class="JdbcUserDao">
<property name="dataSource" ref="dataSource"> </property>
</bean>
2、继承JdbcDaoSupport类的实现方法(Spring框架可以帮助我们完成dataSource的注入):
public class JdbcUserDao extends JdbcDaoSupport implements UserDao{
public void save(User user){
String sql="insert into d_user(email,name,password,code,time,ip) values(?,?,?,?,?,?)";
this.getJdbcTemplate().update(sql,new Object[]{user.getEmail(),....user.getIp()});
}
public void update(User user){
String sql="update d_user set email=?,name=?,password=?,code=?,time=?,ip=? where id=?";
this.getJdbcTemplate().update(sql,new Object[]{user.getEmail(),....user.getIp()});
}
public void deleteById(int id){
String sql="delete from d_user where id=?";
this.getJdbcTemplate().update(sql,new Object[]{id});
}
public User findById(int id){
String sql="select * from d_user where id=?";
return (User)this.getJdbcTemplate().queryForObject(sql,new Object[]{id},new UserMapper());
}
public List<User> findAll(){
String sql="select * from d_user";
List list=this.getJdbcTemplate().query(sql,new UserMapper());
return list;
}
public int count(){
String sql="select count(*) from d_user";
return this.getJdbcTemplate().queryForInt(sql);
}
}
//查询方法需要额外定义映射类:完成结果集字段值与User属性之间的映射关系
//UserMapper实现RowMapper接口,覆盖方法mapRow完成从结果集中解析出结果做操作
public class UserMapper implements RowMapper{
public Object mapRow(ResultSet rs, int index) throws SQLException{
User user = new User();
user.setId(rs.getInt("id"));
user.setEmail(rs.getString("email"));
user.setName(rs.getString("name"));
.
.
.
return user;
}
//改进版:
private static final String ID="id";
public Object mapRow(ResultSet rs, int index) throws SQLException{
User user = new User();
user.setId(rs.getInt(ID));
if(rs.getString("email") != null){ //为防止rs.getString(XXX)取出null值后直接放入user,加if判断
user.setEmail(rs.getString("email"));
}
user.setName(rs.getString("name"));
.
.
.
return user;
}
}
3、整合Hibernate
(定义数据库连接池dataSource;定义sessionFactory;将dataSource、表映射javaBean.xml、hibernateProperties引入到sessionFactory中;
不继承HibernateDaoSupport类时,手动在xml文件中将sessionFactory属性引入到访问数据库bean组件,在DaoImp类中给HibernateTemplate注入sessionFactory后使用;
继承HibernateDaoSupport类,可直接使用HibernateTemplate)
使用的API:
HibernateDaoSupport------提供编写DAO组件的支持
HibernateTemplate--------提供了增删改查操作
save()-------------------保存
update()-----------------更新
delete()-----------------删除
find()-------------------查询
使用HibernateDaoSupport提供的this.getSession()获取Session对象-------分页查询
XML配置:
首先配置连接池dataSource----->配置SessionFactory------>将SessionFactory注入给所有DAO组件
例子:
------》倒入Hibernate架包(框架整合时,会遇到jar包冲突的问题;Spring对Hibernate的整合是在JDBC之上的)
------》配置数据源dataSource:定义dataSource <bean>组件
------》配置SessionFactory:定义sessionFactory <bean>组件;
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property> ----引入连接池属性
<property name="mappingResources"> ----引入映射文件属性
<list>
<value>...User.hbm.xml </value>
</list>
</property>
<property name="hibernateProperties"> ----引入配置Hibernate配置
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
</props>
</property>
</bean>
------》配置映射文件 + 映射文件对应的javaBean类(Hibernate的标配)
------》接口UserDao的实现类(此类需要访问数据库)中:
1、不继承HibernateDaoSupport类的实现方法(用set方法注入SessionFactory):
public class JDBCUserDao implements UserDao{
private HibernateTemplate template;
public void setSessionFactory(SessionFactory sessionFactory){
template = new HibernateTemplate(sessionFactory);
}
public void save(User user){
template.save(user);
}
.
.
.
}
<bean id="hibernateUserDao" class="HibernateUserDao">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
2、继承HibernateDaoSupport类的实现方法(Spring框架可以帮助我们完成SessionFactory的注入):
public class HibernateUserDao extends HibernateDaoSupport implements UserDao{
public void save(User user){
this.getHibernateTemplate().save(user);
}
public void update(User user){
this.getHibernateTemplate().update(user);
}
public void deleteById(int id){
User user = findById(id);
this.getHibernateTemplate().delete(user);
}
public User findById(int id){
String hql="from d_user where id=?";
List list=this.getHibernateTemplate().find(hql, new Object[]{id});
if(!list.isEmpty()){
return (User)list.get(0);
}
return null;
}
public List<User> findAll(){
String hql="from d_user";
return this.getHibernateTemplate().find(hql);
}
public int count(){
String hql="select count(*) from d_user";
List list=this.getHibernateTemplate().find(hql);
return Integer.valueOf(list.get(0).toString());
}
}
相关推荐
在这个“Spring与Hibernate整合实例(博客用户登录增删改查)”中,我们将探讨如何将这两个强大的框架——Spring和Hibernate——结合起来,以实现一个博客系统的用户管理功能,包括用户登录、注册、信息修改以及数据...
标题"Spring+Hibernate工具类所有增删改查"暗示了这是一个集合了Spring和Hibernate框架中用于基本数据库操作的工具类库。这些工具类通常包含了一系列静态方法,用于执行常见的数据库CRUD(创建、读取、更新、删除)...
在"Spring+Hibernate 增删改查等基本操作"这个主题中,我们主要探讨的是如何整合这两个框架来实现数据持久化。以下是一些关键的知识点: 1. **Spring**: - **依赖注入(DI)**:Spring的核心特性之一,通过XML...
### 使用Spring MVC与Hibernate实现学生信息管理系统的增删改查功能 #### 一、项目背景与目标 在当前的工作环境中,快速掌握并应用新技术是非常重要的技能之一。本案例旨在通过结合Spring MVC与Hibernate来实现一...
该压缩包文件"springmvc+hibernate+spring学生表增删改查.zip"涉及到的是一个基于Java技术栈的Web应用程序开发示例,主要利用Spring MVC、Hibernate和Spring框架来实现学生信息表的CRUD(创建、读取、更新、删除)...
spring 3.2.0+hibernate ...可以实现最基本的对数据库的增删改查。 文件上传,拦截器,操作的数据库是Mysql, 如果操作的数据库是oracle或者是其他, 将mysql-connector-java-5.1.20-bin.jar 改为相应的驱动包即可。
9. **单元测试与集成测试**:为了确保封装的功能正确无误,项目可能包含了一些测试类,使用JUnit或其他测试框架对BaseDao的增删改查及分页功能进行验证。 通过以上知识点的介绍,我们可以看出这个项目提供了一个...
Ibatis与MySQL的结合,使得开发者能够方便地执行SQL查询,实现数据的增删改查操作。 整合这五个技术的关键在于配置。在Maven的pom.xml文件中,需要定义所有依赖项,确保所有组件的版本兼容。在Spring的配置文件中,...
在“SSH整合代码附单表增删改查”项目中,用户.sql文件很可能包含了数据库的初始脚本,用于创建单表的结构和可能的数据填充。在实际开发中,开发者会根据这个脚本来建立与Hibernate实体类对应的数据库表。通过Struts...
在本教程中,我们将深入探讨SpringBoot入门及其与MySQL数据库的整合,进行基础的增删改查操作。 首先,SpringBoot的核心优势在于其自动配置特性。通过引入starter-pom依赖,如`spring-boot-starter-web`和`spring-...
在这个实例中,我们将探讨如何利用这三个框架实现一个简单的登录功能,并通过Spring进行登录、增、删、改、查的完整操作。 首先,Struts2作为MVC模式中的Controller层,负责处理用户请求并转发到相应的Action。在...
5. 实现业务逻辑:在Service层使用Spring的依赖注入获取SessionFactory,通过Session进行数据库操作,利用Hibernate的CRUD方法完成数据的增删改查。 6. 创建控制器:在Spring MVC的Controller类中,定义处理HTTP...
这个"Struts+Spring+Hibernate框架样例+数据库(含增、删、改、查)"的项目,旨在提供一个完整的示例,帮助开发者理解和实践这三大框架的集成使用以及与数据库的交互。 1. **Struts框架**:Struts是基于MVC(Model-...
在实际的"SSH案例(增删改查)"项目中,开发者可能还使用了JDBC或者Spring的JdbcTemplate进行数据库交互,这些工具可以帮助简化数据库操作。同时,为了增强用户体验,界面可能使用了JSP(Java Server Pages)和HTML...
// 其他增删改查方法... } ``` 通过这种方式,Spring和Hibernate的整合使我们可以轻松地处理数据库操作,同时保持代码的简洁和可测试性。这个网上书城的例子就是这样一个基础的应用,它演示了如何在Spring中配置和...
此外,Hibernate提供了一套Session API,用于管理事务和对象的状态,方便进行数据的增删改查。 **Spring** 是一个全面的企业级应用开发框架,提供了依赖注入(DI)、面向切面编程(AOP)、事务管理、数据访问/集成...
### Struts2.1.8 + Spring2.5.6 + Hibernate3.3.2整合... - 编写简单的增删改查操作来测试整合是否成功。 通过以上步骤,可以实现Struts2、Spring和Hibernate的整合,为开发复杂的Java Web应用提供强大的技术支持。
这个"基于SSH2的增删改查及分页完整项目"提供了一个全面的示例,帮助开发者理解如何在实际应用中实现数据的增、删、改、查操作以及分页功能。 **Struts2** 是一个MVC(Model-View-Controller)框架,负责处理HTTP...
在"struts2+hibernate增删改查"的应用中,我们将看到以下关键知识点: 1. **整合配置**:首先,需要配置Struts2和Hibernate的整合,包括在`struts.xml`中配置Action,指定Action的类和结果视图;在`hibernate.cfg....
在本教程中,我们将探讨如何将Spring Boot与Hibernate整合,以实现数据库的增删改查操作。Spring Boot简化了配置,而Hibernate则作为强大的对象关系映射(ORM)框架,帮助我们处理数据库交互。让我们逐步解析这个...