SSH进阶(五)SSH框架整合

SSH框架整合

 

 

在之前的博文当中,我们完成了从环境的搭建,到第一个框架SSM的整合,在到Hibernate框架的学习,今天就SSH框架做一些整合,完成基本的手动编写Dao,service,controller代码,以及完成它们的配置;

那废话不多说,直接上代码:

 

1.首先我们有八个步骤类完成这个简单的项目,

首先更具需求来设计数据库结构,这儿小编已经设计好了:如图所示

表的结构设计如图所示:

2.搭建环境

  环境的搭建大家已经比较熟悉了,就是创建maven项目,导入所需要的依赖

主要有,mysql,spring,hibernate,c3p0,jstl.lo4j,servlet核心包;

3.创建pojo与映射文件

  这一步来说的话,之前的博文hibernate逆向生成pojo已经提及过了所以这儿也不再赘述,我们直接就开始来做开发;

4.创建Dao及其实现类

  在Dao层sqlsessionFactory的注入我们采用配置文件来注入;

   老是以添加用户开发怪无聊,今天我们以模糊查询为例来进行开发;

开下面代码:

 

看起实现类的代码:

 

由HibernateTemplate的源码我们可以得到Hibernate的模板类,在根据当中的方法我们得到sessionFactory来得到这个工厂,具体两个方法的源码如下:

  1. 得到工厂了以后,

SessionFactory sessionFactory = this.getHibernateTemplate().getSessionFactory();

 

  1. 根据工厂的到session对像,
Session session = sessionFactory.openSession();
  1. 定义Hql语句
String q="from Javauser where name like :aaa";

,Hql语句就是hibernate得查询语句,之前得博文也有详细得介绍这儿也不做过多的赘述;

 这儿我们也用到了命名是占位,也就是  :java,当然你也可以用索引占位,只是设置的方式不同而已,但是小编建议采用前者;

上面这句话就定义了Hql查询语句,然后我们要做的就是,、

  1. 创建查询
Query<Javauser> query = session.createQuery(q, Javauser.class);
  1. 定义参数
query.setParameter("aaa","%"+name+"%");

 

  1. 执行查询的到结果集
List<Javauser> resultList = query.getResultList();

 

 (7)最后将得到得结果集返回

return resultList;

以上七小步就完成了Dao得开发

 
 
5.service得开发

之后我们进行得就是service得开发,服务层依赖Dao层,同样我们先采用得方式是手动配置方式注入,且采用得就是set方法得注入,看代码:

接口:

实现类set方法注入Dao

实现得模糊查询得方法:

当然为我们是规范写法,写了Dto层用来接收页面的参数,当然在这里我们dto里面得内容和pojo里面得是一样得,有些读者可能会问,那为什么要它呢?答案就是在真正做项目得时候。我们是需要给前端访问数据的,前端得命名方式可能会和我们得不同所以我们需要dto这样一层来做数据得过度将前端得东西转化成后端得东西,所以因为习惯所以小编这样写了;

好了我们解释代码:

首先我们需要创建一个用于返回得dto集合:

List<dto> list1=new ArrayList<>();
接下来我们用我们注入得Dao对象,来调用Dao层得方法,得到查询得结果集;
注意:我们得到得结果集是JavaUser类型得,所以我们需要将其转化为dto并加入到我们之前创建得集合当中:
List<Javauser> list = dao.fingByName(name);

for (Javauser javauser : list) {

    dto dto1=new dto();

    BeanUtils.copyProperties(javauser,dto1);

    list1.add(dto1);

}
这就完成可上述得转化和添加;
之后将我们得集合返回给controller即可;
这样我们就开发完了service层;
 

6.编写controller

当然首先控制层是依赖于服务层得所以我们应该注入服务层 得对象:

控制层我们要完成得就是接收页面得数据,调用服务层,返回结果,并定向到新得页面;

对于表现层我们是采用注解方式来开发的

具体看下面代码:

声明是控制类,并采用注解得方式注入对象:

下面就是具体得控制器:

我们在这里得到页面得数据之后,调用方法得到结果集,

使用得是ModelAndView来添加域对象,并进行转达地址得设置

采用得是物理视图:

方法上面得注解就i不再赘述了,之前得博文都提了好多遍了

7.我们进行配置整合

 首先整合得是持久层以及服务层

之前我们用到了dbcp.druid连接池,此处我们使用得就是才c3p0连接池;

具体看下面得代码:

首先就是数据源得配置c3p0我们采用得类是ComboPooledDataSource

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">

    <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/user?characterEncoding=utf-8"></property>

    <property name="driverClass" value="com.mysql.jdbc.Driver"></property>

    <property name="user" value="root"></property>

    <property name="password" value="root2"></property>

</bean>



之后就是sessionFactory对象得创建

<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
对于这个类由源码我们知道
 
首先就是要关联数据源

    <property name="dataSource"  ref="dataSource"></property>
 
然后就是关联我们之前在hibernate核心配置文件当中得扩展属性,以及映射实体得注册:

    <property name="hibernateProperties">

        <props>

            <prop key="hibernate.dialect">org.hibernate.dialect.MySQL55Dialect</prop>

            <prop key="format_sql">true</prop>

            <prop key="show_sql">true</prop>

        </props>

    </property>
这儿就是完成,我们实体映射得注册,要是由多个,在这里创建多个value即可,

    <property name="mappingResources">

        <array>

            <value>com/ww/pojo/Javauser.hbm.xml</value>

        </array>

    </property>

</bean>

以上我们就完成了hibernate 整合;
接下来,创建持久层对象,注入工厂

<bean id="userDao" class="com.qf.Dao.UserDaoImpl">

    <property name="sessionFactory" ref="sessionFactory"></property>

</bean>


创建服务i层对象,注入Dao层对象

<bean id="userService" class="com.qf.service.UserServiceImpl">

    <property name="dao" ref="userDao"></property>

</bean>


建立事务管理对象

<bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">

    <property name="sessionFactory" ref="sessionFactory"></property>

    <property name="dataSource" ref="dataSource"></property>

</bean>

定义事务表明那些方法需要事务那些不需要:

<tx:advice id="myadvice" transaction-manager="transactionManager">

    <tx:attributes>

        <tx:method name="add*" propagation="REQUIRED"/>

        <tx:method name="del*" propagation="REQUIRED"/>

        <tx:method name="update*" propagation="REQUIRED"/>

        <tx:method name="find*" read-only="true"/>

        <tx:method name="get*" read-only="true"/>

    </tx:attributes>

</tx:advice>



AOP编程,定义切入点,关联事务形成切面:

<aop:config>

    <aop:pointcut id="mypoint" expression="execution(* com.qf.service.*.*(..))"></aop:pointcut>

    <aop:advisor advice-ref="myadvice" pointcut-ref="mypoint"></aop:advisor>

</aop:config>

最后应该是web表现层得整合,之前都是写在一起得,这儿我们分出来了单独得文件,

SpringMvc

下面就是它的代码:

<!-- 创建表现层对象 也是扫描 和服务层的扫描方式是一样的.和服务层的注解组合 -->

<context:component-scan base-package="com.qf.controller"></context:component-scan>



<!-- 配置注解的处理器映射器和适配器 -->

<mvc:annotation-driven></mvc:annotation-driven>

一句话搞定处理器映射器以及适配器的配配置

<!--  视图解析器 -->

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

</bean>

最后我们应该去web.xml当中去配置前端控制器,即可;

这样我们就完成了整合项目的构建;

8.测试

我们最后要做的就是编写前端页面去测试;

一下就是小编编写的前端页面,有点草率,不过是能测试的:

输入三进行模糊查询得到的结果是:

以上就是开发以及测试,下篇博文会讲解到SSH全自动的整合,即关联到JPA,敬请期待!

版权声明:本文为博主原创文章,未经博主允许不得转载。https://blog.csdn.net/qq_42112846

猜你喜欢

转载自blog.csdn.net/qq_42112846/article/details/81158445