ssm整合过程总结

一。 ssm整合步骤

Mybatis层:

一: mybatis-config.xml (sqlMapConfig.xml)

	1.  配置要扫描的pojo层 为他们起别名	
	    <typeAliases>
	        <!--单个别名的定义-->
	        <typeAlias type="com.jay.pojo.Books" alias="books"/>
	        <!--批量别名的定义 自动扫描整个包下的类 别名为类名字(首字母大写或小写都可以)(推荐)-->
	        <package name="com.jay.domain"/>
	    </typeAliases>

	2.告知mybatis映射配置的具体位置  相当于写impl
	    <mappers>
	    	<!--<mapper resource="com/jay/dao/BookDao.xml"/>-->
	        <!--<mapper class="com.jay.dao.BooksDao"/>--> <!--也不行 因为使用注解会和xml冲突 所以必须删掉UserDao.xml-->
	        <!--或者直接一键注册所有dao(推荐)-->
	        <package name="com.jay.dao"/>
		</mappers>

二。具体实现 Booksdao.xml等类似实现类的xml文件

1.
	<mapper namespace="com.jay.dao.UserDao">
	    <resultMap id="userMap" type="com.jay.domain.User">
	        <!--配置主键 主键是id  property是pojoc对象的字段的名字 column是数据库的字段的名字-->
	        <id property="uid" column="uid"/>
	        <result property="uname" column="uname"/>
	        <result property="pwd" column="pwd"/>
	        <result property="sex" column="sex"/>
	        <result property="age" column="age"/>
	        <result property="birth" column="birth"/>
	        <!-- collection 是用于建立一对多中集合属性的对应关系
	        ofType 用于指定集合元素的数据类型
	        -->
	        <collection property="roles" ofType="com.jay.domain.Role">
	            <id column="rid" property="roleId"/>
	            <result column="role_name" property="roleName"/>
	            <result column="role_desc" property="roleDesc"/>
	        </collection>
	    </resultMap>
	 
	    <select id="findAll" resultMap="userMap">
	     <!-- select * from t_user;-->
	          <!--用户到角色的多对多 包含角色信息  -->
	        SELECT u.* , r.* FROM t_user u
	        LEFT JOIN user_role  ur ON u.`uid` = ur.`UID`
	        LEFT JOIN role r ON ur.`RID` = r.`rid`;
	    </select>
	    。。。
	    。。。

	 这样的   

Spring层:

一.spring-dao.xml:(spring整合dao)

	1.关联数据库配置文件 
	  eg:<context:property-placeholder location="classpath:database.properties"/>

	2.配置连接池
	 	2.1 配置连接池属性(driverClass 	jdbcUrl user password 等) 
	 	2.2	私有属性 maxPoolSize minPoolSize等

	3.配置sqlsessionFactory对象 
		3.1   注入数据库连接池   <property name="dataSource" ref="dataSource"/>
		3.2   配置MyBaties全局配置文件:mybatis-config.xml(相当于spring 和 mybatis相关联)   
								<!--注意这里的configLocation是value 不是ref-->
		 <property name="configLocation"   value="classpath:mybatis-config.xml"/>
		3.3(注):配置SqlSessionFactory对象时,
		SqlSessionFactoryBean是生产SqlSessionFactory的一种工厂Bean;
		SqlSessionFactory是一种生产SqlSession的工厂;
		SqlSession是代表数据库连接客户端和数据库Server之间的会话信息;
		SqlSessionTemplate是SqlSession的一个具体实现。如下图3.3:
		
	 	
	4.配置扫描Dao接口包,动态实现Dao接口注入到spring容器中 <!--解释可参考: https://www.cnblogs.com/jpfss/p/7799806.html-->
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">	
		4.1	注入sqlSessionFactory	   
		<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>

		4.2	给出需要扫描Dao接口包
			<property name="basePackage" value="com.jay.dao"/>

图3.3
图3.3
一.4解释参考

二. spring-service.xml(spring整合service 原来一部分内容是写在bean.xml)

	1 扫描service相关的bean
       <context:component-scan base-package="com.jay.service"/>

	2.   IOC容器配置
		<!--如将 BookServiceImpl注入到IOC容器中-->
	    <bean id="BookServiceImpl" class="com.jay.service.impl.BookServiceImpl">
	        <property name="bookMapper" ref="bookMapper"/>
	    </bean>

   3. 配置事务管理器
		3.1 利用aop配置事务管理器  
		    <bean class="org.springframework.jdbc.datasource.DataSourceTransactionManager" id="transactionManager">
		        <!-- 注入数据库连接池 -->
		        <property name="dataSource" ref="dataSource"/>
		    </bean>
	    3.2 <!--配置事务通知-->
	    	<tx:advice id="txAdvice" transaction-manager="transactionManager">
		        <!--配置事务的属性-->
		        <tx:attributes>
		            <tx:method name="*" propagation="REQUIRED" read-only="false"/>
		            <tx:method name="find*" propagation="SUPPORTS" read-only="true"/>
		        </tx:attributes>
		    </tx:advice>

	 	3.3 <!--配置aop-->
			<aop:config>
			    <!--配置切入点表达式-->
			    <aop:pointcut id="ptserviceImplAllMethod" expression="execution(* com.jay.service.impl.*.*(..))"/>
			    <!--建立事务控制和切入点的关系-->
			    <aop:advisor advice-ref="txAdvice" pointcut-ref="ptserviceImplAllMethod"/>
			</aop:config>	

SpringMVC层:

	1.web.xml: 
			里面配置:DispatcherServlet,,encodingFilter以及 Session过期时间 

	2.spring-mvc.xml: (spring整合springmvc )
		2.1 开启SpringMVC注解驱动  
			<mvc:annotation-driven />
		
		2.2 静态资源默认servlet配置 
			<mvc:default-servlet-handler/>
		
		2.3 配置jsp 显示ViewResolver视图解析器 (如果是前后端分离项目就不必配置) 

		2.4<!-- 4.扫描web相关的controller -->
		<context:component-scan base-package="com.jay.controller" />

最后:

在applicationContext.xml ( bean.xml)里 整合三个xml文件(spring-dao,spring-service,spring-mvc)

配置文件,暂时结束!接下来就是Controller 和 视图层编写

二。学习ssm整合时遇到的问题

1.还未掌握利用ajax将本页与后端交互后得到的信息转发或重定向来 携带到另外一个页面(表单请求可以?? )

2.点击的时候有弹窗但是没能用ajax加载到tab标签里
有这么个前端错误
Uncaught TypeError: Cannot read property ‘length’ of undefined
在这里插入图片描述
经过调试 发现是在前端在ajax请求返回data时 利用js拼接的时候 循环控制出错
思考发现是因为 后端返回来的json数据格式是数组类型的 于是应该控制变量时按照 data.length来控制循环终止的条件

成功页面应该是前端拼接字符串出来 显示在div里的
在这里插入图片描述

参考资料 https://blog.kuangstudy.com/index.php/archives/487/

发布了53 篇原创文章 · 获赞 18 · 访问量 1752

猜你喜欢

转载自blog.csdn.net/c22cxz/article/details/104084022