spring框架结合mybatis(三)【SSM框架】

spring思维导图
spring介绍和ioc控制反转(一)
spring框架aop详细(二)
spring框架结合mybatis(三)
spring框架事务处理(四)

四.mybatis框架和spring集成在一起

1.mybatis使用

用的技术是:ioc 。
为什么ioc能把mybatis和spring集成在一起,像一个框架, 是因为ioc能创建对象。
可以把mybatis框架中的对象交给spring统一创建, 开发人员从spring中获取对象。
开发人员就不用同时面对两个或多个框架了, 就面对一个spring

1.1 mybatis使用步骤,对象

  1. 定义dao接口 ,StudentDao
  2. 定义mapper文件 StudentDao.xml
  3. 定义mybatis的主配置文件 mybatis.xml
  4. 创建dao的代理对象, StudentDao dao = SqlSession.getMapper(StudentDao.class);

List students = dao.selectStudents();

1.2 要使用dao对象,需要使用getMapper()方法,

怎么能使用getMapper()方法,需要哪些条件

  1. 获取SqlSession对象, 需要使用SqlSessionFactory的openSession()方法。
  2. 创建SqlSessionFactory对象。 通过读取mybatis的主配置文件,能创建SqlSessionFactory对象

需要SqlSessionFactory对象, 使用Factory能获取SqlSession ,有了SqlSession就能有dao , 目的就是获取dao对象
Factory创建需要读取主配置文件

我们会使用独立的连接池类替换mybatis默认自己带的, 把连接池类也交给spring创建。

主配置文件

  1. 数据库信息
 <environment id="mydev">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                
                <property name="url" value="jdbc:mysql://localhost:3306/springdb"/>
                
                <property name="username" value="root"/>
                
                <property name="password" value="123456"/>
            dataSource>
  1. mapper文件的位置
 <mappers>
        <mapper resource="com/tx/dao/StudentDao.xml"/>
 mappers>

通过以上的说明,我们需要让spring创建以下对象

  1. 独立的连接池类的对象, 使用阿里的druid连接池
  2. SqlSessionFactory对象
  3. 创建出dao对象

2.spring和mybatis的集成

步骤

  1. 新建maven项目
  2. 加入maven的依赖
    (1)spring依赖
    (2)mybatis依赖
    (3)mysql驱动
    (4)spring的事务的依赖
    (5)mybatis和spring集成的依赖: mybatis官方体用的,用来在spring项目中创建mybatis
    的SqlSesissonFactory,dao对象的
	pom.xml
	
	
	<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	  <modelVersion>4.0.0modelVersion>
	
	  <groupId>com.txgroupId>
	  <artifactId>ch07-spring-mybatisartifactId>
	  <version>1.0-SNAPSHOTversion>
	
	  <properties>
	    <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
	    <maven.compiler.source>1.8maven.compiler.source>
	    <maven.compiler.target>1.8maven.compiler.target>
	  properties>
	
	  <dependencies>
	    
	    <dependency>
	      <groupId>junitgroupId>
	      <artifactId>junitartifactId>
	      <version>4.11version>
	      <scope>testscope>
	    dependency>
	    
	    <dependency>
	      <groupId>org.springframeworkgroupId>
	      <artifactId>spring-contextartifactId>
	      <version>5.2.5.RELEASEversion>
	    dependency>
	    
	    <dependency>
	      <groupId>org.springframeworkgroupId>
	      <artifactId>spring-txartifactId>
	      <version>5.2.5.RELEASEversion>
	    dependency>
	    <dependency>
	      <groupId>org.springframeworkgroupId>
	      <artifactId>spring-jdbcartifactId>
	      <version>5.2.5.RELEASEversion>
	    dependency>
	    
	    <dependency>
	      <groupId>org.mybatisgroupId>
	      <artifactId>mybatisartifactId>
	      <version>3.5.1version>
	    dependency>
	    
	    <dependency>
	      <groupId>org.mybatisgroupId>
	      <artifactId>mybatis-springartifactId>
	      <version>1.3.1version>
	    dependency>
	    
	    <dependency>
	      <groupId>mysqlgroupId>
	      <artifactId>mysql-connector-javaartifactId>
	      <version>5.1.9version>
	    dependency>
	    
	    <dependency>
	      <groupId>com.alibabagroupId>
	      <artifactId>druidartifactId>
	      <version>1.1.12version>
	    dependency>
	  dependencies>
	
	  <build>
	    
	    <resources>
	      <resource>
	        <directory>src/main/javadirectory>
	        <includes>
	          <include>**/*.propertiesinclude>
	          <include>**/*.xmlinclude>
	        includes>
	        <filtering>falsefiltering>
	      resource>
	    resources>
	    
	    <plugins>
	      <plugin>
	        <artifactId>maven-compiler-pluginartifactId>
	        <version>3.1version>
	        <configuration>
	          <source>1.8source>
	          <target>1.8target>
	        configuration>
	      plugin>
	    plugins>
	  build>
	project>
  1. 创建实体类
  2. 创建dao接口和mapper文件
  3. 创建mybatis主配置文件
    mybatis.xml
    
    
    <configuration>
        
        <settings>
            
            <setting name="logImpl" value="STDOUT_LOGGING"/>
        settings>
        
        <typeAliases>
            
            <package name="com.tx.domain"/>
        typeAliases>
        
        <mappers>
            
            <package name="com.tx.dao"/>
        mappers>
    configuration>
    
  4. 创建Service接口和实现类,属性是dao。
  5. 创建spring的配置文件:声明mybatis的对象交给spring创建
    1)数据源DataSource
    2)SqlSessionFactory
    3)Dao对象
    4)声明自定义的service
    applicationContext.xml
    	
    <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"
           xsi:schemaLocation="http://www.springframework.org/schema/beans 
           http://www.springframework.org/schema/beans/spring-beans.xsd 
           http://www.springframework.org/schema/context 
           https://www.springframework.org/schema/context/spring-context.xsd">
        
        <context:property-placeholder location="classpath:jdbc.properties" />
    
       (1)
        <bean id="myDataSource" class="com.alibaba.druid.pool.DruidDataSource"
              init-method="init" destroy-method="close">
            
            
            <property name="url" value="${jdbc.url}" />
            <property name="username" value="${jdbc.username}"/>
            <property name="password" value="${jdbc.passwd}" />
            <property name="maxActive" value="${jdbc.max}" />
        bean>
    
       (2)
        <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
            
            <property name="dataSource" ref="myDataSource" />
            
            <property name="configLocation" value="classpath:mybatis.xml" />
        bean>
    
        (3)
        <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
            
            <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
            
            <property name="basePackage" value="com.tx.dao"/>
        bean>
    
        (4)
        <bean id="studentService" class="com.tx.service.impl.StudentServiceImpl">
            <property name="studentDao" ref="studentDao" />
        bean>
    beans>
    
  6. 创建测试类,获取Service对象,通过service调用dao完成数据库的访问

你可能感兴趣的:(spring,mybatis,java)