几大框架整合知识点总结

1、hibernate与spring整合

在我的理解力spring与hibernate的整合,无非是sessionfactory由spring创建。

配置文件如下

	<!-- 3:spring整合hibernate的核心 -->
	<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<property name="dataSource" ref="dataSource">
			
		</property>
		<property name="configLocation">
			<value>
				classpath:hibernate.cfg.xml
			</value>
		</property>
	</bean>
在这里我们还需要掌握hibernate的另一个知识点,如下一段代码很重要

HibernateDaoSupport这个类是hibernate与spring整合是才有的。非常重要。

public class CommonDaoImpl<T> extends HibernateDaoSupport implements CommonDao<T> {
	
	/**T型转换*/
	Class entityClass = TUtil.getActualType(this.getClass());
	
	@Resource(name="sessionFactory")
	public void setDi(SessionFactory sessionFactory){
		this.setSessionFactory(sessionFactory);
	}
下面这段代码在写基类时,貌似百分百用到

	public static Class getActualType(Class entity) {
		ParameterizedType parameterizedType = (ParameterizedType) entity.getGenericSuperclass();
		Class entityClass = (Class) parameterizedType.getActualTypeArguments()[0];
		return entityClass;
	}
下面给几个方法吧,掌握这些基本上spring与hibernate的整合也就没啥了

	public void save(T entity) {
		this.getHibernateTemplate().save(entity);
	}
	
	/**更新*/
	public void update(T entity) {
		this.getHibernateTemplate().update(entity);
	}
	
	/**使用主键ID,查询对象*/
	public T findObjectByID(Serializable id) {
		return (T) this.getHibernateTemplate().get(entityClass, id);
	}
	
	public T findObjectBySno(Serializable sno) {
		return (T) this.getHibernateTemplate().get(entityClass, sno);
	}
	
	/**删除(使用主键ID删除)*/
	public void deleteObjectByIds(Serializable... ids) {
		if(ids!=null && ids.length>0){
			for(Serializable id:ids){
				//先查询
				Object entity = this.findObjectBySno(id);
				//再删除
				this.getHibernateTemplate().delete(entity);
			}
		}
	}

接下来讲解spring与struts2的整合

这个整合其实就是struts动作类的对象由spring创建,更重要的是它是javaweb的集合,已启动容器,我们所说的启动tomcat,spring就要工作起来,

如果要实现struts的对象由spring创建,那么我们要做哪些配置呢。

  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:beans.xml</param-value>
  </context-param>
  
      <filter>
    <display-name>SystemUtils</display-name>
    <filter-name>SystemUtils</filter-name>
    <filter-class>jsu.java.ld.utls.SystemUtils</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>SystemUtils</filter-name>
    <url-pattern>*.do</url-pattern>
  </filter-mapping>
  <filter-mapping>
    <filter-name>SystemUtils</filter-name>
    <url-pattern>*.jsp</url-pattern>
  </filter-mapping>
  
  <filter>
    <filter-name>openSessionInViewFilter</filter-name>
    <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>openSessionInViewFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  <filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>*.do</url-pattern>
    <url-pattern>*.jsp</url-pattern>
  </filter-mapping>
  


其实这个注解就两层含义,已启动tomcat,spring就工作起来,创建对象,通过监听器实现,

下面还有一个注解是告诉struts,动作类的对象由spring创建。


下面我们来学习一下spring 和mybatis整合把

首先sqlsesion由spring来创建,看配置文件

<bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
	<!-- 数据源 -->
	<property name="dataSource" ref="dataSource"/>
	<!-- 配置SqlMapConfig.xml -->
	<property name="configLocation" value="classpath:mybatis/SqlMapConfig.xml"/>
	
</bean><pre name="code" class="html"><bean id="userDao" class="cn.itcast.ssm.dao.old.UserDaoImpl">
	注入会话工厂
	<property name="sqlSessionFactory" ref="sqlSessionFactoryBean"/>
</bean> 

 同时dao层编写案例 

public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao {
	

	@Override
	public User findUserById(int id) throws Exception {
		//创建SqlSession
		SqlSession sqlSession = this.getSqlSession();
		
		return sqlSession.selectOne("test.findUserById", id);
	}

}


mybatis还提供了我们一个更好的东西,动态代理

我们只需要写dao层接口就可以了

首先配置mybatis文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jdbc="http://www.springframework.org/schema/jdbc"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
     http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd
     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
     http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">

	<!--mybatis  sessionFactory配置-->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource"/>
		<!-- 读取配置文件,在xml中需要用classpath,如果是指明哪个包,或哪个类,就如同import一样 -->
		<!-- <property name="mapperLocations" value="classpath:jsu/java/ld/core/dao/*.xml"/> -->
		<!--别名  -->
		<property name="typeAliasesPackage" value="jsu.java.ld.core.bean"/>
	</bean>
	
	 <!-- 扫包  -->
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="basePackage"  value="jsu.java.ld.core.dao"/>
	</bean>
	
</beans>
但是这里要注意,xml文件和dao接口前缀名相同,并且在相同目录下,原因下段配置。

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="basePackage"  value="jsu.java.ld.core.dao"/>
	</bean>




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值