ssm整合

来源:互联网 发布:阿里大数据平台建成 编辑:程序博客网 时间:2024/05/21 19:34

1.搭建开发环境,导入相关jar包,40个jar包的百度云(http://pan.baidu.com/s/1cAK4W2)

包含mybatis核心包和mybatis依赖包

mybatisspring整合包

springjar包(包括springmvcjar包)

数据库驱动包

第三方数据库连接池


 

2.配置文件




mybatis/SqlMapConfig.xml---mybatis全局配置文件

spring/ applicationContext- dao.xml---springmybatis整合的配置(SqlSessionFactorymapper配置)(dao

spring/ applicationContext-service.xml---配置业务接口(service

spring/applicationContext.xml---spring配置文件(配置公用内容:数据源)

spring/springmvc.xml----------springmvc的全局配置文件

db.properties—数据库连接参数

log4j.properties---日志 配置文件



 

3.工程结构









4.整合的思路以及步骤


整合步骤:

1、 整合持久层

Mybatisspring整合

整合目标:

加载数据库参数,数据库连接池交给spring创建,在applicationContext.xml中配置

sqlSessionFactoryBeanxxxdao交给spring创建,在applicationContext-dao.xml配置

SqlMapConfig.xml只需要加载po的映射文件

 

 

2、 整合业务层

Spring管理service

   整合目标:

Service通过spring调用dao,在applicationContext-service.xml中配置

 

3、 整合控制层

因为springmvcspring一个模块,只要加入jar包,配置springmvc.xmlweb.xml即可。

整合目标:action中通过spring调用service




 

 

5.整合持久层


dao交给spring管理

 

配置数据源

applicationContext.xml


<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:context="http://www.springframework.org/schema/context"xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd "><!-- 加载数据库参数,用户 密码 等等 --><context:property-placeholder location="classpath:db.properties"/><!-- 使用第三方的数据库连接池dbcp --><bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"><!-- 这里用set方法进行注入 --><property name="driverClassName" value="${jdbc.driver}" /><property name="url" value="${jdbc.url}" /><property name="username" value="${jdbc.username}" /><property name="password" value="${jdbc.password}" /><!-- 开发阶段数据库最大连接数建议设置小一点够用即可,设置为3 --><property name="maxActive" value="${jdbc.maxActive}" /><property name="maxIdle" value="${jdbc.maxIdle}" /></bean></beans>


db.properties

jdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/mybatisjdbc.username=rootjdbc.password=rootjdbc.maxActive=3jdbc.maxIdle=1



SqlMapConfig.xml

这里默认已经创建了User.java


<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><!-- 配置映射文件 --><mappers><mapper resource="sqlmap/User.xml"/></mappers></configuration>


User.xml

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">



spring管理SqlSessionFactory

 

applicationContext-dao.xml

<!-- 配置SqlSessionFactory --><bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean"><!-- 数据源 --><property name="dataSource" ref="dataSource"/><!-- 配置SqlMapConfig.xml --><property name="configLocation" value="classpath:mybatis/SqlMapConfig.xml"/></bean><!-- 配置dao --><bean id="userDao" class="com.mo.dao.UserDaoImpl"><!-- 注入会话工厂 上面 sqlSessionFactoryBean已经注入容器--><property name="sqlSessionFactory" ref="sqlSessionFactoryBean"/></bean>





 

9.开发dao


 

dao接口和dao实现类

 

编写dao的实现类,继承SqlSessionDaoSupport

 

UserDaoImpl.java


/** * *在这里继承 SqlSessionDaoSupport,SqlSessionDaoSupport中很多东西 *例如sqlSession等,UserDaoImpl都可以使用,比较方便 * */public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao{public User findById(int id) {//创建SqlSessionSqlSession sqlSession = this.getSqlSession();User user = (User)sqlSession.selectOne("test.findUserById", id);return user;}}



定义User.xml

<mapper namespace="test"><select id="findUserById" parameterType="int" resultType="com.mo.po.User">SELECT * FROM USER  WHERE id = #{id}</select></mapper>



SqlMapConfig.xml中配置User.xml

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><!-- 配置映射文件 --><mappers><mapper resource="sqlmap/User.xml"/></mappers></configuration>



applicationContext-dao.xml配置dao

<!-- 配置dao --><bean id="userDao" class="com.mo.dao.UserDaoImpl"><!-- 注入会话工厂 上面 sqlSessionFactoryBean已经注入容器--><property name="sqlSessionFactory" ref="sqlSessionFactoryBean"/></bean>


测试dao

public class TestDao {@Testpublic void test(){ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"spring/applicationContext.xml","spring/applicationContext-dao.xml"});UserDao userDao = (UserDao)context.getBean("userDao");User user = (User)userDao.findById(1);System.out.println(user);}}



10.整理业务层


Spring管理service

   整合目标:

Service通过spring调用dao,在applicationContext-service.xml中配置

 

写service接口和service实现类

public class UserServiceImpl  implements UserService{@Resource(name="userDao") //这里需要在applicationContext-service.xml中启动注解的驱动 private UserDao userDao;public User findUserById(int id){return userDao.findById(id);}}


将service讲给spring管理,在applicationContext-service.xml中配置

 <!-- 启动注解的驱动 -->       <context:annotation-config/>       <!-- 这是service层 --><bean id="userService" class="com.mo.service.UserServiceImpl"></bean>



测试service层,这时候需要加载3个配置文件

public class TestService {@Testpublic void test(){ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"spring/applicationContext.xml","spring/applicationContext-dao.xml","spring/applicationContext-service.xml"});UserService userService = (UserService)context.getBean("userService");User user = (User)userService.findUserById(1);System.out.println(user);}}




11整合控制层

 

整合目标:action中通过spring调用service

 

配置springmvc.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:aop="http://www.springframework.org/schema/aop"        xmlns:tx="http://www.springframework.org/schema/tx"        xmlns:mvc="http://www.springframework.org/schema/mvc"                  xsi:schemaLocation="              http://www.springframework.org/schema/beans         http://www.springframework.org/schema/beans/spring-beans-3.0.xsd                http://www.springframework.org/schema/context        http://www.springframework.org/schema/context/spring-context-3.0.xsd              http://www.springframework.org/schema/mvc        http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd                  ">                   <!-- Action控制器 ,扫描 com.mo.action包中有注解的类 并使它成为一个控制器-->        <context:component-scan base-package="com.mo.action"/>        <!-- 基于注解的映射器(可选) -->        <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/>                <!-- 基于注解的适配器(可选) -->        <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>                <!-- 视图解析器(可选) -->        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/>            </beans>  


web.xml中配置前端控制器,同时加载spring容器

<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"><!-- 加载spring容器 --><context-param><param-name>contextConfigLocation</param-name><!-- 这里使用了通配符 --><param-value>/WEB-INF/classes/spring/applicationContext.xml,/WEB-INF/classes/spring/applicationContext-*.xml</param-value></context-param><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>   <!-- 注册springmvc框架核心控制器 -->      <servlet>          <servlet-name>DispatcherServlet</servlet-name>          <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>          <init-param>        <!-- 自定义加载配置文件-->        <param-name>contextConfigLocation</param-name>        <param-value>classpath:spring/springmvc.xml</param-value>        </init-param>    </servlet>      <servlet-mapping>          <servlet-name>DispatcherServlet</servlet-name>          <url-pattern>*.action</url-pattern>      </servlet-mapping>    </web-app>



编写action 

目标:通过调用userService取出用户信息,在页面显示。


UserAction.java

@Controller//注意:这里需要在springmvc.xml中配置context:component-scan,启动注解自动扫描public class UserAction {@Autowired//注入UserService,spring容器中已经装配了private UserService userService;@RequestMapping(value="queryUser")public String queryUser(Model model){User user = (User) userService.findUserById(1);model.addAttribute("user", user);model.addAttribute("message", "ssm整合");return "/jsp/1.jsp";}}


编写页面


 

1.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  <html>    <head>      <title>ssm整合</title>    </head>    <body>      ${user.username}    ${message}  </body>  </html> 

 

最后tomcat部署访问

http://localhost:8080/ssm/queryUser.action




从数据库读取了数据

ssm整合完成




0 0