SSM进阶(八)SSM---全自动

 

SSM(二)---全自动

             -------------mapper代理

 

 如约而至的全自动开发!!!!!!

上篇博文我们介绍了使用SQL绝对定位的方式来实现SSM的整合,详细看过上篇博文的读者以及了解了Dao层的注入原理,本篇博文就全自动来介绍,此次我们不用去编写Daoc层,而是由框架去自动生成,只是生成的方式不同而已;

 

那就开始吧:

 

首先我们环视应该去创建MAVEn项目再去导入依赖,这样就有了一个基本的开发环境

其次我们应该加入自动生成的插件,用来自动生成以及日志插件去打印日志方便查看;

当然我们应该在自动生成的插件当中声明表对应的实体类,用来删除类,具体如图所示:

 

 

然后我们点击生成按钮即可生成,如下图:

 

找到自己所对应的项目选中 点击绿色的生按钮即可;当然只能够点击一次不然会重发生成;

点击了之后就会生成相应的内容分别是:pojo,Dao,Mapper

其中pojo中有两种文件,一种是生成的实体类一个就是对应的Example文件

Example文件的作用就是,用方法的方式去添加查询的条件,模糊查询就是这样完成的;

Daol里面就是对应的接口文件用来定义具体的方法,

Mapper里面呢就是对应的映射文件,因为底层是ORM所以肯定会有映射文件的;

 以上我们的基础就已经好了,接下来我们要做的就是开发;

我们要开发的有:service,Dto,Controller,此处我们仅以addUSER这个方法来进行演示,我i他的可以去博主的博客上面下载名字是SSM2;

服务层和控制层我们采用的是注解的方式来进行开发;

1.     service的开发

服务层首先是由接口及其实现类的,我们的注解是加载其实现类上面的

我要知道服务层是依赖与Dao层的所以应该注入Dao层的对象

在服务层我们要做的就是:声明这是服务层,注入Daoc层的对象,变写addUser方法

具体看下面的代码:

在service里面声明接口的名字的原因就是为例方便在控制层注入服务层的对象;

当然你也可以不加;

 

@Autowire表示的就是自动注入,我们只需要在配置文件当中开启扫描即可;

2.     接下来我们来开发Dto

Dto的作用是为了方便我们与表现层交互,因为有的时候前端所给或者锁要求返回数据的名字和我们后台的是不一样的所以需要我们去做一些转化,另一方面的优势就是可以解耦,减少前台对后套的依赖;

我们要做的就是封装前台所需要的数据提供get set方法 将其返回给控制层

当然我们这里为了演示就只是封装了和具体的类一样的属性;下面是代码:

Get set没有截图大家可以自己去生成;

3.     Controller开发

对于控制层 我们知道控制层是依赖于服务层的

所以我们除了做控制层的声明之外,还要做的就是将服务层对象注入,来操作服务层的数方法来的带想要的数据:

之后就是编写方法,方法之上要声明@ResquestMapping(“/addUser.do”)

.do是我们在web.xml当中定义的拦截后缀

具体代码如下:

因为我们定义的dto和页面的参数名字是一样的,所以这里我们直接可以使用该Dto来接受页面的请求参数,直接将其传递到服务层处理即可;

4.     配置文件

最后就是我们配饰文件的编写,具体代码如下:

 

(1)当然首先就是我们数据源的配置

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
    <property name="url" value="jdbc:mysql://localhost:3306/user?characterEncoding=utf-8"></property>
    <property name="driverClassName"value="com.mysql.jdbc.Driver"></property>
    <property name="username" value="root"></property>
    <property name="password" value="root2"></property>
    <property name="maxActive" value="3"></property>
 </bean>
 

(2)创建sql工厂对象,在其中关联数据源,并进行实体的注册
<bean id="SqlSessionFactory"class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource"ref="dataSource"></property>
    <property name="mapperLocations"value="classpath:com/ww/mapper/*Mapper.xml"></property>

 </bean>
 

(3)再接着就是产生Dao对象,MapperScannerConfigurer这个对象回去关联SqlSessionFactory,从而再mapper.xml当中找到sql操作数据库
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage"value="com.ww.dao"></property>
</bean>

(4)我们再开启扫描去产生服务层的对象,因为控制层也是注解的方式开发的所以我们在这里一并开启扫描;
<context:component-scan base-package="com.ww.service,com.ww.Controller"></context:component-scan>
 

(5)接着应该创建事务管理类对象,为事务也关联数据源
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource"ref="dataSource"></property>
</bean>
(6) 声明定义事务切面,确定那些方法需要添加事务那些不需要,那些设置为只读
<tx:advice id="myadvice" transaction-manager="transactionManager">
    <tx:attributes>
        <tx:method name="add*" propagation="REQUIRED"/>
        <tx:method name="delUser" propagation="REQUIRED"/>
        <tx:method name="updateUser"propagation="REQUIRED"/>
        <tx:method name="find*" read-only="true"/>
    </tx:attributes>
</tx:advice>
 

(7)然后就是服务层整合的随后一项,即aop编程,里面由切入点的声明然后就是关联事务和切入点来形成切面;
<aop:config>
    <aop:pointcut id="mypoint" expression="execution(*com.ww.service.*.*(..))"></aop:pointcut>
    <aop:advisor advice-ref="myadvice" pointcut-ref="mypoint"></aop:advisor>
</aop:config>
 

(8)开始整合控制层

控制层有,前端处理器的配置,这个部分一般在。Web.xml当中去配置

然后就是处理器映射器配置、处理器适配器的配置、视图解析器的配置,最后经过数据的渲染之后将其发送给客户端;

下面这句就是将处理器映射器与处理器适配器进行了配置
<mvc:annotation-driven></mvc:annotation-driven>
 

(9)视图解析器的配置
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

 

这里是一个前后缀的配置,是逻辑视图,当然大家可以不写继续采用物理视图;
    <property name="prefix" value="/"></property>
    <property name="suffix" value=".jsp"></property>
</bean>



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

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值