小白学好SSM(二)

今天开始总结下之前学过的所有东西,简单来说就是针对SSM的简单的集合框架,无其他的特殊内容如增加缓存之类的
接下来分为三个部分

一、SSM框架的理解(个人的理解哦)
二、SSM框架的实现

三、SSM框架实现的代码
OK,正文开始继续

一、SSM框架的理解
SSM框架是由SpringMVC+Spring+Mybatis组成的目前主流的框架,正如大多数框架而言,SSM也是分为表现层、业务层、持久层,继而对应着我们的SSM,由SpringMVC控制着页面和业务层的交互,业务层是Spring控制的Service,控制着业务层,Mybatis是和底层数据库交互的,当然后面我也会相应的总结与redis实现

二、SSM框架的实现(流程)
正如我之前写过的一篇博客,里面写着关于SpringMVC的运行方式,我就不多说了,过程我也就直接阐述来关于SSM的,起点是用户给的请求,前端控制器会拿到,再根据URL配对在处理器映射器里面的ResultMapping("参数"),接着映射器会返回给前端,前端控制器也就是DispatcherServlet,它会返回给处理器适配器,处理器适配器交给Handler处理器,也就是运行Hander(Controller)就是运行这个东西,在这儿开始,业务层开始进入,通过Spring的注解@Resource也可以是@autow自动注入吧!接着业务层开始接管任务,ServiceImpl实现它所实现的业务逻辑,servecInpl实现类里面就包含对Mybatis的操作,接着Mybatis对底层数据库的执行,接着依次逆序回到Handler(Control)回到Handler处理器,返回一个ModleAndView或者其他类型的数据返回给页面,页面可以选择填充数据,或者不填充,接着就是相应给用户
三、实现的代码(之前我看过很多的XML配置文件,都不怎么样,都会有一些问题,自己注意下,就行了)

1、持久层
一、Mapper
package com.ssm.mybatis.mapper;
import com.ssm.mybatis.pojo.User;
import com.ssm.mybatis.pojo.UserExample;
import java.util.List;
import org.apache.ibatis.annotations.Param;
public interface UserMapper {
    int countByExample(UserExample example);
    int deleteByExample(UserExample example);
    int deleteByPrimaryKey(Integer id);
    int insert(User record);
    int insertSelective(User record);
    List<User> selectByExample(UserExample example);
    User selectByPrimaryKey(Integer id);
    int updateByExampleSelective(@Param("record") User record, @Param("example") UserExample example);
    int updateByExample(@Param("record") User record, @Param("example") UserExample example);
    int updateByPrimaryKeySelective(User record);
    int updateByPrimaryKey(User record);
}
后面的XMl就不贴了,都是逆向工程自动生成的。

二、Pojo

package com.ssm.mybatis.pojo;

public class User {
    private Integer id;

    private String name;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name == null ? null : name.trim();
    }
}很整洁的pojo,没有其他,同样也是逆向工程自动生成的
三、Mybatis的配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
 PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-config.dtd">
 
 <!--全局Setting配置,根据需要再加  -->
 
<configuration>
<!-- <properties resource="classpath:log4j.properties">
</properties> -->
<!--  定义别名-->
<typeAliases>
<package name="com.ssm.mybatis.pojo"/>
</typeAliases>
</configuration>

2、业务层
一、Service和servicImpl

package com.ssm.service;
import org.springframework.stereotype.Service;

import com.ssm.mybatis.pojo.User;
@Service
public interface UserOrderService {
 public User find(Integer id) throws Exception;
 public boolean addUser(UserOrderService user);
 public User UserOrder();
}
package com.ssm.serviceImpl;
import javax.annotation.Resource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ssm.mybatis.mapper.UserMapper;
import com.ssm.mybatis.pojo.User;
import com.ssm.service.UserOrderService;
@Service
public class UserOrderServiceImpl implements UserOrderService{
 @Resource(name = "userMapper")
 private UserMapper userMapper;
  
 @Override
 public User find( Integer id) throws Exception {
  // TODO Auto-generated method stub
  return userMapper.selectByPrimaryKey(id);
 }

 @Override
 public boolean addUser(UserOrderService user) {
  // TODO Auto-generated method stub
  return false;
 }

 @Override
 public User UserOrder() {
  // TODO Auto-generated method stub
  return userMapper.selectByPrimaryKey(null);
 }
}
3、表现层

一、handler(Controller)
package com.ssm.controller;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import com.ssm.mybatis.pojo.User;
import com.ssm.service.UserOrderService;
@Controller
public class MyFristWeb {
 @Resource(name = "UserOrderServiceImpl")
 private UserOrderService userOrderService;
@RequestMapping("/addUser.do")
 public ModelAndView addUser() {  
  User userOrderCustom= userOrderService.UserOrder();
  ModelAndView modelAndView=new ModelAndView();
  modelAndView.addObject("userOrderCustom", userOrderCustom);
  modelAndView.setViewName("Love");
  return modelAndView;
 }
 @RequestMapping("/userlist.do")
 public String userList() {  
  return "user_list";
 }
 @RequestMapping("/loadUpdate.do")
 public String loadUpdate() {

  return "user_update";
 }
 
 @RequestMapping("/updateUser.do")
 public String updateUser() {
  return "user_info";
 }
 @RequestMapping("/deleteUser.do")
 public String deleteUser() {
  
  return "user_info";
 }
}

二、配置文件

<?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:tx="http://www.springframework.org/schema/tx"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-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
">
 <!-- 定义事务管理器 -->
 <!-- 数据库的事务控制 -->
 <!-- 1.配置数据库相关参数properties的属性:${url} -->
 <!-- 2.数据库连接池 -->
 <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
  <!-- 配置连接池属性 -->
  <property name="driverClass" value="${jdbc.driver}" />
  <property name="jdbcUrl" value="${jdbc.url}" />
  <property name="user" value="${jdbc.username}"/>
  <property name="password" value="${jdbc.password}" />
  <!-- c3p0连接池的私有属性 -->
  <property name="maxPoolSize" value="30" />
  <property name="minPoolSize" value="10" />
  <!-- 关闭连接后不自动commit -->
  <property name="autoCommitOnClose" value="false" />
  <!-- 获取连接超时时间 -->
  <property name="checkoutTimeout" value="10000" />
  <!-- 当获取连接失败重试次数 -->
  <property name="acquireRetryAttempts" value="2" />
 </bean>

    <!-- 配置Service -->
    <bean id="UserOrderServiceImpl" class="com.ssm.serviceImpl.UserOrderServiceImpl"/>

 <!-- 3.配置SqlSessionFactory对象 -->
 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  <!-- 注入数据库连接池 -->
  <property name="dataSource" ref="dataSource" />
  <!-- 配置MyBaties全局配置文件:mybatis-config.xml -->
  <property name="configLocation" value="classpath:SqlMapConfig.xml" />
  <!-- 扫描entity包 使用别名 -->
  <!-- <property name="typeAliasesPackage" value="com.ssm.mybatis.pojo" /> -->
  <!-- 扫描sql配置文件:mapper需要的xml文件 -->
  <!-- <property name="mapperLocations" value="classpath:mapper/*.xml" /> -->
 </bean>
 <!-- 4.配置扫描Dao接口包,动态实现Dao接口,注入到spring容器中如果使用扫面多个包的话,中间使用半角的逗号隔开
  -->
 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  <!-- 注入sqlSessionFactory -->
  <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
  <!-- 给出需要扫描Dao接口包 -->
  <property name="basePackage" value="com.ssm.mybatis.mapper" />
 </bean>
 
 <bean id="transactionManager"
  class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  <property name="dataSource" ref="dataSource" />
 </bean>
 <!-- 定义事务策略 -->
 <tx:advice id="txAdvice" transaction-manager="transactionManager">
  <tx:attributes>
  <!-- 传播行为 -->
   
   <tx:method name="save*" propagation="REQUIRED"/>
   <tx:method name="delete*" propagation="REQUIRED"/>
   <tx:method name="insert*" propagation="REQUIRED"/>
   <tx:method name="find*" propagation="SUPPORTS" read-only="true" />
  </tx:attributes>
 </tx:advice>
 
 <aop:config>
  <!--pointcut元素定义一个切入点,execution中的第一个星号 用以匹配方法的返回类型,
   这里星号表明匹配所有返回类型。 com.simple.sso.service.*.*(..)表明匹配com.ssm.service包下的所有类的所有 
   方法 -->
  <aop:pointcut id="myPointcut" expression="execution(* com.ssm.service.*.*(..))" />
  <!--将定义好的事务处理策略应用到上述的切入点 -->
  <aop:advisor advice-ref="txAdvice" pointcut-ref="myPointcut" />
 </aop:config>
 
</beans>

三、SpringMVC的配置文件
<?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:context="http://www.springframework.org/schema/context"
 xmlns:mvc="http://www.springframework.org/schema/mvc"
 xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
  http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
  http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">
 
 <!-- 扫面Controller -->
 <context:component-scan base-package="com.ssm"/>
<!-- 配置试图解析器 -->
 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  <property name="prefix" value="/JSP/"></property>
  <property name="suffix" value=".jsp"></property>
 </bean>
 <!-- 两个标准配置 -->
 <!-- 将springmvc不能处理的请求交给Tomcat -->
 <mvc:default-servlet-handler/>
 <!-- 能支持springmvc更高的一些功能,JSR303校验,快捷的ajax。。。 -->
 <mvc:annotation-driven></mvc:annotation-driven>
 <import resource="classpath:applicationContext-transaction.xml"/>
</beans>

四、Web.xml配置

<?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:context="http://www.springframework.org/schema/context"
 xmlns:mvc="http://www.springframework.org/schema/mvc"
 xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
  http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
  http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">
 
 <!-- 扫面Controller -->
 <context:component-scan base-package="com.ssm"/>
<!-- 配置试图解析器 -->
 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  <property name="prefix" value="/JSP/"></property>
  <property name="suffix" value=".jsp"></property>
 </bean>
 <!-- 两个标准配置 -->
 <!-- 将springmvc不能处理的请求交给Tomcat -->
 <mvc:default-servlet-handler/>
 <!-- 能支持springmvc更高的一些功能,JSR303校验,快捷的ajax。。。 -->
 <mvc:annotation-driven></mvc:annotation-driven>
 <import resource="classpath:applicationContext-transaction.xml"/>
</beans>
最后的最后,小小的总结下,对于通过逆向工程生成的POJO和MAPPER不用修改,直接另外再添加一个类继承类实现

有需要我的文件的小伙伴,直接下方留言和你的邮箱,分享至上,谢谢!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值