SSM 整合
spring:注入bean,IOC容器创建对象 ,解耦合
springmvc:本身spring一个web组件 ,处理请求给用户响应资源
mybatis:持久层ORM映射模型dao层 全局配置文件,很多个映射文件,核心sqlsessionFactory注入到spring
(1)导包
spring:context,bean,test,core,aop
springmvc:web ,web-mvc,dbcp,jstl
mybatis:mybatis,mysql-connection-java,log4j
mybatis-spring
(2)spring配置文件
<!--数据源 -->
<!--加载数据库属性文件 -->
<context:property-placeholder location="classpath:jdbcConfig.properties"/>
<bean name="ds" class="org.apache.commons.dbcp2.BasicDataSource">
<property name="driverClassName" value="${jdbc.driverName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
<property name="initialSize" value="${jdbc.initialSize}"/>
<property name="maxIdle" value="${jdbc.maxIdle}"/>
<property name="maxTotal" value="${jdbc.minIdle}"/>
<property name="minIdle" value="${jdbc.minIdle}"/>
</bean>
<!--配置sqlSessionFactory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="ds"/>
<!--全局配置文件 -->
<property name="configLocation" value="classpath:sqlmapConfig.xml"/>
</bean>
<!--映射文件 -->
<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
<property name="mapperInterface" value="com.edu.mapper.UserMapper"/>
<property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
</bean>
<!-- 事务管理 -->
<aop:config>
<aop:pointcut expression="execution(* com.edu.service.impl.*.*(..))" id="mypc"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="mypc"/>
</aop:config>
<!-- 事务通知器 -->
<tx:advice transaction-manager="txManager" id="txAdvice">
<tx:attributes>
<!--查询 只读不支持事务 -->
<tx:method name="get*" propagation="NOT_SUPPORTED" read-only="true"/>
<tx:method name="add*" propagation="REQUIRED"/>
<tx:method name="update*" propagation="REQUIRED"/>
<tx:method name="del*" propagation="REQUIRED"/>
</tx:attributes>
</tx:advice>
<!-- 事务管理器-->
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
p:dataSource-ref="ds"/>
</beans>
(3)mybatis配置文件
<configuration>
<typeAliases>
<package name="com.edu.pojos"/>
</typeAliases>
<mappers>
<!--批量引入映射文件对应的接口 -->
<!-- <package name="com.edu.mapper"/> -->
<mapper resource="sqlmapper/UserMapper.xml"/>
</mappers>
</configuration>
//映射文件
<mapper namespace="com.edu.mapper.UserMapper">
<select id="getUserById" parameterType="int" resultType="user">
select * from user where UID=#{uid}
</select>
</mapper>
//映射接口
public interface UserMapper {
public User getUserById(int id);
}
//说明:批量引入映射文件,需要将接口和映射文件放在同一个包下
实际使用时:将单个映射文件的注入不实用。
使用扫描批量扫描所有的mapper接口
<!--扫描加载多个映射文件 实例名默认是接口名首字母小写 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.edu.mapper"></property>
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
</bean>
<mappers>
<!--批量引入映射文件对应的接口 -->
<package name="com.edu.mapper"/>
</mappers>
//要求:映射xml和接口在同一目录下
(3)springmvc配置文件
<!-- 扫描组件 -->
<context:component-scan base-package="com.edu"/>
<!--处理器映射器,适配配 -mvc驱动 -->
<mvc:annotation-driven/>
<!--视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
(4)整合service层
@Service
public class UserServiceImpl implements UserService{
@Autowired
private UserMapper userMapper;
@Override
public User get_user_by_id(int id) {
return userMapper.getUserById(id);
}
}
(5)整合control层
@Controller
public class UserControl {
@Autowired
private UserService userService;
@RequestMapping("/hello")
public ModelAndView getHello(){
ModelAndView mv=new ModelAndView();
//调用service
User uu=userService.get_user_by_id(44);
mv.addObject("user",uu);
mv.setViewName("index");
return mv;
}
}