SSM笔记(1)——Spring + Mybatis整合

spring-mybatis.xml 笔记

整合Spring和Mybatis的主配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:aop="http://www.springframework.org/schema/aop" 
    xmlns:context="http://www.springframework.org/schema/context"
    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-4.3.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
        http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx-4.3.xsd">        

< context:property-placeholder >

我们在基于spring开发应用的时候,一般都会将数据库的配置放置在properties文件中.

    <!--1 引入属性文件,在配置中占位使用 -->
    <context:property-placeholder location="classpath:db.properties" />

这样/src/main/resources/db.properties文件就会被spring加载
如果想使用多个配置文件,可以添加order字段来进行排序


< bean id=“datasource” >

配置数据源

    <!--2 配置C3P0数据源 -->
    <bean id="datasource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
        <!--驱动类名 -->
        <property name="driverClass" value="${jdbc.driver}" />
        <!-- url -->
        <property name="jdbcUrl" value="${jdbc.url}" />
        <!-- 用户名 -->
        <property name="user" value="${jdbc.uid}" />
        <!-- 密码 -->
        <property name="password" value="${jdbc.pwd}" />
        <!-- 当连接池中的连接耗尽的时候c3p0一次同时获取的连接数  -->
        <property name="acquireIncrement" value="5"></property>
        <!-- 初始连接池大小 -->
        <property name="initialPoolSize" value="10"></property>
        <!-- 连接池中连接最小个数 -->
        <property name="minPoolSize" value="5"></property>
        <!-- 连接池中连接最大个数 -->
        <property name="maxPoolSize" value="20"></property>
    </bean>
c3p0 与 dpdp的区别:

dpcp 没有自动回收空闲连接的功能,c3p0有
两者主要是对数据连接的处理方式不同!C3P0提供最大空闲时间,DBCP提供最大连接数。

前者当连接超过最大空闲连接时间时,当前连接就会被断掉。DBCP当连接数超过最大连接数时,所有连接都会被断开。

dbcp它的原理是维护多个连接对象Connection,在web项目要连接数据库时直接使用它维护的对象进行连接,省去每次都要创建连接对象的麻烦。提高效率和减少内存使用。


< bean id=“sqlSessionFactory” >

Spring和Mybatis整合,不用配置Mybatis-config.xml文件,直接将sqlSessionFactory的创建工作交给Spring

 <!--3 会话工厂bean sqlSessionFactoryBean -->
 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
     <!-- 数据源 -->
     <property name="dataSource" ref="datasource"></property>
     <!-- 别名,扫描实体包 -->
     <property name="typeAliasesPackage" value="com.zhangguo.bookstore.entities"></property>
     <!-- 配置mapper文件扫描路径 -->
     <property name="mapperLocations" value="classpath:com/zhangguo/bookstore/mapper/*Mapper.xml"></property>
 </bean>

Mybatis动态代理

MapperScannerConfigurer类:spring-mybatis-1.x.x.jar包 中生产出mapper接口的实现类

   <!--4 自动扫描对象关系映射 -->
   <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
       <!--指定会话工厂,如果当前上下文中只定义了一个则该属性可省去 -->
       <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
       <!-- 指定要自动扫描接口的基础包,实现接口 -->
       <property name="basePackage" value="com.zhangguo.bookstore.mapper"></property>
   </bean>

< bean id=“transactionManager” >
  <!--5 声明式事务管理 -->
  <!--定义事物管理器,由spring管理事务 -->
  <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
      <property name="dataSource" ref="datasource"></property>
  </bean>
  <!--支持注解驱动的事务管理,指定事务管理器 -->
  <tx:annotation-driven transaction-manager="transactionManager"/>

< context:component-scan >

配置完这个标签后,spring就会去自动扫描base-package对应的路径或者该路径的子包下面的java文件,如果扫描到文件中带有@Service,@Component,@Repository,@Controller等这些注解的类,则把这些类注册为bean

    <!--6 容器自动扫描IOC组件  -->
    <context:component-scan base-package="com.zhangguo.bookstore"></context:component-scan>
注解:
  1. @Service告诉spring容器,这是一个Service类,标识持久层Bean组件,默认情况会自动加载它到spring容器中。
  2. @Autowried注解告诉spring,这个字段需要自动注入
  3. @Scope指定此spring bean的scope是单例
  4. @Repository注解指定此类是一个容器类,是DA层类的实现。标识持久层Bean组件
  5. @Componet:基本注解,标识一个受Spring管理的Bean组件
  6. @Controller:标识表现层Bean组件
  <!--7 aspectj支持自动代理实现AOP功能 -->
  <aop:aspectj-autoproxy proxy-target-class="true"></aop:aspectj-autoproxy>
</beans>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值