首先需要创建一个工程,创建成下图的层次
添加jar包
jar下载路径:`链接:https://pan.baidu.com/s/1yRkk-O792yNoexWciJd_DA
提取码:7gcz
一)配置mybatis.xml文件,只需要配置别名
由于需要spring来创建和管理数据源,所以mybatis就不需要创建数据源了,并且spring负责实例化sqlSessionFactory以及各个mapper接口的动态代理对象,此处不需要加载mapper文件。
<configuration>
<!-- 指定包下面的实体类,别名为小写 -->
<typeAliases>
<package name="com.oracle.ssm.model" />
<package name="com.oracle.ssm.vo" />
</typeAliases>
</configuration>
二)配置springmvc.xml文件只需要配置注解扫描器(视图解析器,文件上传解析器,拦截器,静态资源释放后期再说)
<!-- 配置注解扫描器的路径 扫描器会扫描到指定包路径下所有的类,一旦该类标识controller注解,就会被实例化 一旦方法被标识了requestMapping注解,会把url路径和方法的类路径,保存到
处理器映射器当中 -->
<context:component-scan base-package="com.oracle.ssm.controller"></context:component-scan>
三)配置spring-mybatis.xml文件:
【1加载jdbc.properties文件;2实例化数据库连接池;3创建sqlSessionFactory;4创建mapper接口对应代理对象;5配置spring注解扫描器】
a.加载jdbc.properties文件,注意location的路径
<!-- mybatis的数据源交给spring的ioc容器来创建 -->
<!-- 读取工程下面的properties文件 -->
<context:property-placeholder location="classpath:jdbc/jdbc.properties" />
b:数据源,配置连接池
<!--实例化数据库连接池、数据源 -->
<!-- 配置mybatis的数据源 使用的是dbcp数据库连接池 常用的数据库连接池 c3p0 dbcp druid -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${jdbc.DriverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
c:创建sqlSessionFactory
<!-- 既然有了数据源,那么就可以让spring容器来创建sqlSessionFactory 需要加载mybatis.xml以及mapper.xml,还需要数据源 -->
<!-- sqlSessinFactory在mybatis单独使用的时候 咱们封装了一个工具类来获取该单例,但是和spring整合之后 完全交给spring的ioc容器来实例化该对象
3个参数:1:mybatis的核心配置文件在哪 2:mybatis的mapper文件在哪 3:数据源是谁 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 加载mybatis的核心配置文件 -->
<property name="configLocation" value="classpath:mybatis/mybatis.xml" />
<!-- 数据源 -->
<property name="dataSource" ref="dataSource" />
<!-- 映射文件位置 -->
<property name="mapperLocations" value="classpath:com/oracle/ssm/mapper/*.xml"></property>
</bean>
d:创建mapper接口对应代理对象
<!-- 有了sqlSessionFactory 就可以open一个sqlSession, 那么有了sqlSession,就可以让spring提前创建每一个mapper接口对应的代理对象 -->
<!-- mybatis-spring-1.3.0.jar,提供了 自动生成mapper代理对象的机制, 只需要配置mapper接口的包路径 和sqlsessionfactory -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.oracle.ssm.mapper" />
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
</bean>
完成以上步骤整合就结束了
e:配置spring的注解扫描器,扫描service层
<!-- 配置spring的注解扫描器,扫描service层 -->
<!-- 配置spring的注解扫描器,注意 不扫描controller注解 -->
<context:component-scan base-package="com.oracle.ssm.service">
<context:exclude-filter type="annotation"
expression="org.springframework.stereotype.Controller" />
</context:component-scan>
四)配置web.xml【springMvc核心控制器,模糊匹配,编码过滤;配置spring监听器(监听读取配置文件的位置 ,监听ioc容器的创建工作)】
a:springMvc核心控制器,模糊匹配,编码过滤
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<!-- 配置框架启动参数 参数路径是springmvc的配置文件的路径 -->
<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>
<!-- 统一编码的过滤器 -->
<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>
b:配置上下文参数,指定spring监听器读取配置文件的位置
<!-- 配置上下文参数,指定spring监听器读取配置文件的位置 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:spring/spring-mybatis.xml
</param-value>
</context-param>
<!-- 该监听器会监听ioc容器的创建工作 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
接下来写一个demo测试:使用generatorSqlmapCustom生成(省略)
A:写一个TestController
@Controller
public class TestController {
@Autowired
private UserService userService;
@RequestMapping("/test.action")
public @ResponseBody User test(int id){
return userService.findUserById(id);
}
}
B:建一个service
@Service
public class UserServiceImpl implements UserService{
@Autowired
private UserMapper userMapper;
@Override
public User findUserById(int id) {
// TODO Auto-generated method stub
return userMapper.selectByPrimaryKey(id);
}
}
C:其余反向创建工程
写demo注意的事项:
Controller层一定要写注解@Controller,@Autowired注解
service层一定要写注解:@Service,@Autowired注解
部署启动项目,当出现json格式的页面,代表成功。
完整项目下载地址:
链接:https://pan.baidu.com/s/1dHWV_TD0vEgIAkp2y9hDaw
提取码:qgo0