Spring和Mybatis
Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。
两个重要模块:Spring面向方面编程(AOP)和控制反转(IOC)容器。
控制反转模式(也称作依赖性介入)的基本概率是:不创建对象,但是描述创建它们的方式。
在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务。
容器 (在 Spring 框架中是 IOC 容器) 负责将这些联系在一起。在典型的 IOC 场景中,容器创建了所有对象,并设置必要的属性将它们连接在一起,决定什么时间调用方法。
MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及 结果集的检索。
MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及 结果集的检索。
整合思路:
1、数据源信息交给spring管理
2、SqlSessionFactory交给spring进行单例管理
3、由spring来管理原始dao的实现类或者mapper代理的代理类。
工程搭建
创建Maven工程,添加如下依赖:
Spring的依赖:spring-context
Mybatis的依赖:mybatis
Spring和mybatis的整合:mybatis-spring
Spring-jdbc的依赖:spring-jdbc
Jdbc连接:mysql-connector-java
dbcp的依赖:commons-dbcp2
aop的依赖:aspectjweaver
添加mybatis配置文件
<settings>
<!--指定mybatis默认的日志实现,这里选用标准输出,可以打印出执行过程的sql语句,详细信息查看mybatis官网中setting设置一节-->
<!-- 开启驼峰命名规则 -->
<setting name="mapUnderscoreToCamelCase" value="true"/>
<!--开启日志-->
<setting name="logImpl" value="STDOUT_LOGGING"/>
<!-- 延迟加载 默认false -->
<setting name="lazyLoadingEnabled" value="true" />
<!-- 积极加载 默认true -->
<setting name="aggressiveLazyLoading" value="false" />
<!--开启缓存-->
<setting name="cacheEnabled" value="true"/>
</settings>
<typeAliases>
<package name="com.smile.model"/>
</typeAliases>
3.添加spring配置文件
配置bean的自动扫描
<context:component-scan base-package="com.smile"/>
使用dbcp连接池配置数据源
<bean name="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">
<property name="driverClassName" value="${jdbc.Driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<!-- 作为一个数据库连接池 性能参数 -->
<!-- maxActive:最大连接数量 -->
<property name="maxActive" value="10" />
<!-- maxIdle: 最大空闲连接 -->
<property name="maxIdle" value="5" />
</bean>
配置SqlSessionFactoryBean
<!-- Mybatis核心工厂类 -->
<bean name="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="configLocation" value="classpath:resource/mybatis-config.xml"/>
<property name="dataSource" ref="dataSource"></property>
</bean>
配置MapperScannerConfigurer
<!-- 这段配置会扫描com.smile.mapper下的所有接口,然后创建各自接口的动态代理类 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.smile.mapper"/>
</bean>
4.创建jdbc.properties配置文件
jdbc.Driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/mybatis
jdbc.username=root
jdbc.password=123456