前台控制器springmvc搭建好了以后现在也算是完成,后面就要搭建mybatis,不多说下面就开始具体的实现步骤
1、数据准备,一个可连接的mysql数据库(毕竟是开源免费的,oracle也可以)
创建数据库SoulFeeling ,执行下面sql语句
DROP TABLE IF EXISTS `tb_user`;
CREATE TABLE `tb_user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_name` varchar(255) DEFAULT NULL,
`user_pwd` varchar(255) DEFAULT NULL,
`age` int(5) DEFAULT NULL,
`sex` int(5) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;
-- ----------------------------
-- Records of tb_user
-- ----------------------------
INSERT INTO `tb_user` VALUES ('1', 'zhangsan', '123', '25', '1');
INSERT INTO `tb_user` VALUES ('2', 'lisi', '123', '28', '1');
2、添加三层、以及其他对应的包名,
com.soul.ssm.controller、
com.soul.ssm.service、
com.soul.ssm.service.impl 、
com.soul.ssm.mapper 、
com.soul.ssm.model
3、利用Generator- mybatis生成对应的对应表tb_user的 对象和mybatis的映射文件
这里不再具体说怎么生成mybatis的映射文件,这里dao和对应的xml文件统一放在mapper包下(各有各的习惯,有的人是将这个类文件分开放的,我这里放在一块主要是在添加方法的时候修改方便)
现在开始配置mybatis
4、首先配置pom相应的maven jar包(包含上节的springmvc 的jar包)
<properties>
<!-- spring版本号 -->
<spring.version>4.0.2.RELEASE</spring.version>
<!-- mybatis版本号 -->
<mybatis.version>3.4.5</mybatis.version>
<!-- log4j日志文件管理包版本 -->
<slf4j.version>1.7.7</slf4j.version>
<log4j.version>1.2.17</log4j.version>
</properties>
<dependencies>
<!-- spring-mvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- spring 核心包 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- mybatis 包 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<!-- spring 整合mybatis兼容包 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.1</version>
</dependency>
<!-- mysql 包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.43</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.11</version>
</dependency>
</dependencies>
5、在resources 的位置添加三个配置文件(加上spring-mvc.xml)
spring-config.xml、 spring-mybatis.xml 和 log4j.properties
加上原来的spring-mvc.xml 一共四个配置文件
spring-config.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:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="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.xsd
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-4.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd">
<!-- 自动扫描注解的bean -->
<context:component-scan base-package="com.soul.ssm.service" />
<!-- 引入dbconfig.properties属性文件 -->
<context:property-placeholder location="classpath:jdbc.properties" />
</beans>
spring-mybatis.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"
xsi:schemaLocation="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.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd">
<!-- 自动扫描 -->
<context:component-scan base-package="com.soul.ssm.mapper" />
<!-- 引入配置文件 -->
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:jdbc.properties" />
</bean>
<!-- 配置数据源 下面数据连接可以引用jdbc.properties d的参数 也可以直接配合数据库参数 -->
<!-- 阿里 druid 数据库连接池 -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="url" value="jdbc:mysql://47.93.61.197:3306/ssss"></property>
<property name="username" value="root"></property>
<property name="password" value="admin"></property>
</bean>
<!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="mapperLocations" value="classpath:com/soul/ssm/mapper/*.xml"></property>
</bean>
<!-- DAO接口所在包名,Spring会自动查找其下的类 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.soul.ssm.mapper"></property>
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
</bean>
<!-- 事务管理器 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<tx:annotation-driven transaction-manager="transactionManager" />
</beans>
log4j.properties
log4j.rootLogger=DEBUG, stdout
log4j.logger.org.apache.ibatis=DEBUG
### Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
这里也将spring-mvc.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:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
<!-- 扫描controller(controller层注入) -->
<context:component-scan base-package="com.soul.ssm.controller"/>
<mvc:annotation-driven />
<!-- 避免IE执行AJAX时,返回JSON出现下载文件 -->
<!-- <bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
</list>
</property>
</bean> -->
<!-- 静态资源路径过滤 -->
<mvc:resources mapping="/public/**" location="/public/" />
<!-- 对模型视图添加前后缀 -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:prefix="/WEB-INF/view/" p:suffix=".jsp"/>
</beans>
最后配置web.xml 文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>Archetype Created Web Application</display-name>
<!-- 项目编码问题 -->
<filter>
<filter-name>characterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- spring 和 mybatis 的整合 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- ContextLoaderListener初始化Spring上下文时需要使用到的contextConfigLocation参数 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<!-- 配置spring-config.xml和spring-mybatis.xml这两个配置文件的位置,固定写法 -->
<param-value>classpath:spring-config.xml,classpath:spring-mybatis.xml</param-value>
</context-param>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!-- springMVC核心配置 -->
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<!--spingMVC的配置路径 -->
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- 拦截设置 -->
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
6、项目的配置已经完成,现在就剩下添加一个基本的查询逻辑,来测试一下项目是否真的可以运行起来
在一开始使用Generator-mybatis的 mybatis映射文件(Mapper包下的 UserMapper.java和UserMapper.xml )和bean对象类(model包下的User.java )
现在需要新建立controller 和 service的文件
在service包下新建IUserService.java 接口类
package com.soul.ssm.service; import com.soul.ssm.model.User; public interface IUserService { public User getUserById(Integer id); }
在service.impl包下新建UserServicImpl.java (IUserService 的实现类),不要忘了注释 @Service("UserService")
在Controller包下新建UserControllerpackage com.soul.ssm.service.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.soul.ssm.mapper.UserMapper; import com.soul.ssm.model.User; import com.soul.ssm.service.IUserService; @Service("UserService") public class UserServiceImpl implements IUserService { @Autowired private UserMapper userMapper; public User getUserById(Integer id) { return userMapper.selectByPrimaryKey(id); } }
package com.soul.ssm.controller; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import com.soul.ssm.model.User; import com.soul.ssm.service.IUserService; @RequestMapping("user") @Controller public class UserController { @Autowired private IUserService userService; @RequestMapping("index") public ModelAndView index2(HttpServletRequest request, HttpServletResponse response) { String tempId = request.getParameter("uid"); Integer id = null; if(tempId!=null && !"".equals(tempId.trim())){ id = Integer.valueOf(tempId); } User u = userService.getUserById(id); request.setAttribute("user", u); return new ModelAndView("/user/index"); } }
创建index.jsp文件(webapp/WEB-INF/view/user/index.jsp)
<%@ page language="java" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jstl/core" prefix="c"%> <%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt"%> <% String path = request.getContextPath(); request.setAttribute("path",request.getContextPath()); %> <html> <body> <h2>Hello World!</h2><br> 姓名:${user.userName }<br> 密码:${user.userPwd }<br> 年龄:${user.age }<br> 性别:${user.sex }<br> </body> </html>
保存即可
7、现在已经完成了项目的配置和基本开发,将项目添加到tomcat 运行,如果没有报错,基本就没有为题了
最后访问http://localhost:8080/SoulFeeling/user/index?id=1
现在已经将ssm框架搭建完成
注意:项目如果中间有问题的话可能是jdk、tomcat 和 spring对应的版本的关系,这个会有不兼容性的问题
后期我回整理一份关于三者之间的版本关系
这里用到的版本是jdk7、 tomcat7、spring4.0.2
demo下载(现在csdn下载最低是1积分,积分土豪专用)
http://download.csdn.net/download/soulfeeling/9948826
如果没有csdn账号或者不想用积分下载的朋友,下面是百度云的下载地址(百度可能会清连接,如过资源失效@本人)
链接:http://pan.baidu.com/s/1nvwrh3r 密码:1ha6