Spring+SpringMVC+Mybatis+SSM整合教程(手写)

SSM三大框架整合
一.SSM整合配置图
1.关系图




2.流程说明!!
我们知道客户端和服务器是基于HTTP协议请求响应模型通信的。所以这里选择从客户端入手,请求响应首先抵达前端控制层。然后是业务层调用了映射接口的方法,到这里我们产生了一个疑问,这个映射接口UserMapper是如何映射到POJO层的UserMapper.xml呢?答案是本案例在 applicationContext.xml配置了映射扫描器,来完成接口到XML文件的映射。那么到了pojo.UserMapper.xml. 这时候会根据id="映射接口的方法名称" 来执行相应SQL。然后逐层返回最终回到前端控制层,并最终完成页面渲染到客户端的工作。

其实Mybatis本身是可以直接通过POJO层的UserMapper.xml来访问数据库的。
在整合SSM框架之后,我们采用面向接口的形式来跳转到xxMapper.xml来访问持久层。
即通过业务层来调用接口方法,再通过这个接口方法映射到相应的xxMapper.xml。
二.整合配置文件(个人习惯)
1.web.xml
<!--1.配置监听器 ContextLoaderListener  -->
<!--2.配置前端控制器 DispatcherServlet --> 
<!--3.配置过滤器 CharacterEncodingFilter(针对POST提交)
2.applicationContext.xml
<!--1.开启组件扫描 -->
<!--2.引入外部属性文件 jdbc.properties -->
<!--3.配置数据源  dataSource--> 
<!--4.配置事务管理器 DataSourceTransactionManage -->
<!--5.配置通知tx 和引入事务管理器 -->  
<!--6.配置AOP的切入点pc和引入通知tx  --> 
<!--7.导入SqlSessionFactoryBean(整合Mybatis) -->
<!-- 8.导入映射扫描器 MapperScannerConfigurer(整合Mybatis) -->  
3.springmvc-servlet.xml
<!--1.开启MVC注解   -->
<!--2.开启组件扫描  (针对控制层controller)  -->
<!--3.配置视图解析器 InternalResourceViewResolver  -->
4.sqlMapConfig.xml
<!-- 1.省略环境配置-->
<!-- 2.定义别名 -->
5.xxxMapper.xml
<!-- 1.编写CRUD,配置ID和SQL -->


三.SSM整合代码(按执行顺序,详见红色字体)
1.前端控制层
1.1开发形式
 controller.UserController  基于注解形式来配置UserController和多个action.

1.2目标工作
在前端控制器注入业务层,然后调用业务层方法得到用户信息后,传给前端解析器后返回得到完整页面,最后输出到客户端。期间获取了页面资源:WEB-INF/user/userList.jsp

1.3控制层代码
红色字体说明:1 - 9 表示代码的执行流向
@Controller // 1.进入前端控制器
public class UserController {
	@Resource  
	private UserService userService; //2.注入业务层组件
	@RequestMapping("/toUserList.action")  
	public String toUserList(Model model){ 
		List<User> userList = userService.findUserList(); //3.用业务层方法
		model.addAttribute("userList", userList);
		return "user/userList"; //返回部分拼接路径
	}
}

2.业务层
2.1开发形式
采用接口+实现类的形式进行开发。
   即 service.userService + service.userServiceImpl

2.2目标工作
在业务层的实现类注入映射接口,然后调用其接口方法。

2.3业务层代码
@Service("userService")
public class UserServiceImpl implements UserService{
	@Resource 
	private UserMapper userMapper; //4.注入映射接口
	public List<User> findUserList() {	
		return userMapper.findUserList();//5.调用映射接口方法 
          
	}
}
3.映射接口
3.1开发形式 
接口文件:UserMapper.java

此为面向接口编程,作为与Mybatis的重要衔接部分。
     
那么接下来就理清,谁调用映射接口,然后映射到哪里?为什么这样做?

答:业务层在调用映射接口方法userMapper.findUserList();之后,会自动从映射接口跳转到    UserMapper2016.xml ,然后再执行xml里面标签id="findUserList"的SQL语句,成功访问数据库。
 
为了保证上述跳转,我们需要在配置文件中,指明这些映射关系。

    

3.2映射规则和步骤!!
  1.映射规则 
    映射规则:映射接口名即XML名,方法名就是id值(XML里的标签id)!!
    映射方向:映射接口(起点)--> 映射文件XML(目标)
      本案例:mapper. UserMapper.java --> pojo.UserMapper2016.xml 

  2.映射步骤!!
    1.映射起点 mapper
     <property name="basePackage" value="mapper"/> 详看applicationContext.xml 8.1
    2.映射终点pojo/*.xml
     <property name="mapperLocations" value="classpath:/pojo/*.xml"/> 详看7.3

     上面两步仅仅指明了接口到XML文件的流向关系。
     但并没有mapper.UserMapper指定映射到终点的哪一个xml文件。
     所以除了这两步,别忘了还有在UserMapper.xml 的头标签让名称空间指明对应的映射接口文件。
    3.一对一关联 xml:namespace="mapper.xx"
     关联:namespace指明了UserMapper2016.xml 与映射接口UserMapper衔接。
           而需要执行的标签id="接口方法名"即 id="findUserList"
     详看 UserMapper2016.xml  
<mapper namespace="mapper.UserMapper"> 
	<select id="findUserList" resultType="pojo.User">
		select * from user
	</select>	
</mapper>

     

3.3目标工作
     由业务层来调用映射接口,然后映射到POJO包下的同名XML文件。
     目的是衔接到Mybtis的映射配置文件,通过其来访问持久层。
3.4映射接口代码
    public interface UserMapper {//6.映射到pojo.UserMapper.xml
   	  public List<User> findUserList();//7. 然后加载 id=“findUserList”的标签
    }
4.POJO层 
4.1开发形式
    采用实体类POJO+映射文件XML的形式进行开发。
    即:pojo.User.java+pojo.UserMapper.xml   
  
    PS:所谓POJO(Plain Ordinary Java Object)是指简单的JAVA对象,可看成是简单的普通的
        实体类(JavaBean)是为了避免和EJB混淆才创造的简称。
4.2目标工作
编写SQL和访问持久层 
4.3 XML代码
pojo.UserMapper.xml 源代码:
<?xml version="1.0" encoding="UTF-8" ?> ...
<mapper namespace="mapper.UserMapper"> 
     <!-- namespece="package.xx映射接口名"-->
	<select id="findUserList" resultType="pojo.User"> //8.执行SQL
		select * from user
	</select>
</mapper>



四.编写数据库和相关表
DataSource可以在applicationContext.xml 切换调整
DataBase 可以在jdbc.properties调整.

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值