ssm 三框架整合
使得 mybatis 框架能够 单独用
导入相关坐标
1、mysql - connect - java jar 包
2、mybatis 的jar 包
3、数据库链接池的jar 包 (druid 最强连接池)
4、测试 juit 坐标
编写代码就行了
复习 mybatis。
mapper 代理开发 orm 的思想模式
<mapper namespace="com.lagou.dao.AccountDao">
<select id="findAll" resultType="com.lagou.domain.Account">
select *
from Account;
</select>
</mapper>
<!--resultType 是 集合中的类型 写List 会报错 第二次踩坑注意 -->
spring 单独在框架中的应用
相关坐标
1、spring 上下文坐标
2、spring 事务相关坐标
3、aop 切入点相关坐标
4、test junit 相关坐标
spring整合 mybatis
spring 怎么样 将 代理对象 整合进去 ?
观察一段代码
public class TestMybatis {
@Test
public void test() throws IOException {
InputStream stream = Resources.getResourceAsStream("sqlMapConfig.xml");
SqlSession sqlSession = new SqlSessionFactoryBuilder().build(stream).openSession();
AccountDao mapper = sqlSession.getMapper(AccountDao.class);
List<Account> all = mapper.findAll();
for (Account account : all) {
System.out.println(account);
}
}
}
通过上述 我们发现 mapper 代理对象的获取 是通过 sqlSession 获取得到的 我们要获得 proxy 对象 我们就需要 在 spring 中 配置相应的 bean 标签 将 sqlSession 对象提交给 spring ioc 容器进行管理才行。
还需要导入一个整合包 我不理解
mybatis-spring
<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/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
<!-- 开启 注解 扫描-->
<context:component-scan base-package="com.lagou"></context:component-scan>
<!-- spring 整合 mybatis -->
<!-- 将 sqlSessionFactory sqlsession mapper 交给 spring 进行管理即可 -->
<!-- sqlSessionFactory 交给 spirng 线程安全 但是 sqlSession 线程不安全 SqlSession 在 使用时 由工厂创建即可-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="typeAliasesPackage" value="com.lagou.domain"></property>
<!-- 引入 mybatis 的核心配置文件 可以不用加载 除非有 额外功能-->
<!-- <property name="configLocation" value="classpath:sqlMapConfig.xml"></property>-->
</bean>
<!-- 创建数据库相关配置 引入 jdbc 配置文件-->
<context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder>
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="${jdbc.dirver}"></property>
<property name="url" value="${jdbc.url}"></property>
<property name="username" value="${jdbc.username}"></property>
<property name="password" value="${jdbc.pwd}"></property>
</bean>
<!-- MapperScannerConfigurer 扫描该包下的所有接口 接口进行 扫描 并生成 该接口的代理对象 存到 ioc 容器中-->
<bean id="mapper" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- 配置 扫包路径-->
<property name="basePackage" value="com.lagou.dao"></property>
</bean>
<!-- mapper 的映射扫描-->
<!--
InputStream stream = Resources.getResourceAsStream("sqlMapConfig.xml");
SqlSession sqlSession = new SqlSessionFactoryBuilder().build(stream).openSession();
AccountDao mapper = sqlSession.getMapper(AccountDao.class);
-->
</beans>
SpringMVC 在 三框架中单独使用
导jar包
1、 spring-web mvc
2、servlet 包
3、jsp 包
4、jstl 包
springmvc 有个非常关键的组件 前端控制器 他是在web.xml 为文件中 配置的 前端控制器 == > 本质 :Servlet
如何配置 复习一下
< <servlet>
<!-- 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-mvc.xml</param-value>
<!-- 在 服务 启动时就加载 spring mvc.xml 核心配置文件-->
</init-param>
<load-on-startup>1</load-on-startup>
<!-- 配置为正整数 是 在服务器启动时就 执行实例化 进行初始化方法 -->
</servlet>
<!-- 配置 映射-->
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<!--
< url-pattern>/</url-pattern> 会匹配到/login这样的路径型url,不会匹配到模式为*.jsp这样的后缀型url
< url-pattern>/*</url-pattern> 会匹配所有url:路径型的和后缀型的url(包括/login,*.jsp,*.js和*.html等)
-->
<url-pattern>/</url-pattern>
</servlet-mapping>
它通常 与 中文乱码过滤器 一起使用
<filter>
<filter-name>encodingFilter</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>encodingFilter</filter-name>
<!-- 对所有 资源进行拦截-->
<url-pattern>/*</url-pattern>
</filter-mapping>
spring 整合 spring mvc
spring 和 mvc 根本不用整合 父子关系。
但是需要 spring 和 web 容器整合 , 让web容器启动时 自动加载 spring 配置文件 , web 容器销毁时spring 的ioc 容器 也销毁。
借助 ContextLoaderListener 监听器实现。
还需要配置以恶搞全局参数 springxml
配置声明式事务
1、 配置事务管理器
<!--持久层技术 mybatis 使用: DataSourceTransactionManager -->
<!-- 配置事务管理器-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!--开启 事务注解支持 -->
<tx:annotation-driven></tx:annotation-driven>
如何 进行 批量删除
重点是 sql 语句 的编写。