天天看点

Spring整合Mybatis的两种方式及其案例分析、ssm的jar包整合Spring整合MyBatis框架的两种方式ssm几乎所有的jar包:

文章目录

  • Spring整合MyBatis框架的两种方式
      • spring整合MyBatis案例1:
      • spring整合Mybatis案例2:
  • ssm几乎所有的jar包:

Spring整合MyBatis框架的两种方式

  • spring整合mybatis两种方式整合:
  • 无论哪种方式,都是为了得到Mybatis创建出来的代理对象,放到容器中,可以在service层的使用
  • 方式一:(传统的方式,写mybatis的主配置文件)

    • 写好mybatis.xml主配置文件和mybatis的映射文件(引入 jdbcConfig.properties、映射文件的路径等等)
    • 把Mybatis的一些类放入到Spring的容器中(在spring.xml中),Service层可以进行依赖注入Dao层的对象:
    • 把需要用到的对象生成出来,放到容器中就好
    • 常见的Mybatis放到容器中的对象:
      • 连接池的连接源对象
      • SqlSessiomFacatory工厂对象
      • SqlSessionFactoryBuilder对象
      • SqlSession对象
      • 接口的实现类对象
  • 方式二:(不写mybatis.xml主配置文件)

spring整合MyBatis案例1:

Spring整合Mybatis的两种方式及其案例分析、ssm的jar包整合Spring整合MyBatis框架的两种方式ssm几乎所有的jar包:

jdbcConfig.properties

driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis_damo1?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false
username=root
password=015718
           

mybatis.xml

<?xml version="1.0" encoding="UTF-8"?>
<!--导入约束-->
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">

<!-- Mybatis的主配置文件 -->
<configuration>
    <properties resource="jdbcConfig.properties"/>
    <!--起别名-->
    <typeAliases>
        <typeAlias type="com.zy.domain.Account" alias="account"></typeAlias>
    </typeAliases>
    
    <!-- 配置数据库的环境信息 -->
    <environments default="mysql">
        <environment id="mysql">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
	<!-- 映射文件信息 -->
    <mappers>
        <package name="com.zy.dao"/>
    </mappers>
</configuration>
           

映射文件信息:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zy.dao.AccountDao">
    <select id="findAccounts"  resultType="account">
        select * from account;
    </select>
</mapper>
           

applicationContext.xml(spring的配置文件):

<?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:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       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/aop
             http://www.springframework.org/schema/aop/spring-aop.xsd
             http://www.springframework.org/schema/tx
             http://www.springframework.org/schema/tx/spring-tx.xsd
             http://www.springframework.org/schema/mvc
             http://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <!--把生成的代理Dao对象放到容器中(在构造方法,使用得到其代理对象)-->
    <bean id="accountDaoImpl" class="com.zy.dao.Impl.AccountDaoImpl"/>

    <!--AccountServiceImpl对象-->
    <bean id="accountServiceImpl" class="com.zy.service.Impl.AccountServiceImpl">
        <property name="accountDao" ref="accountDaoImpl"/>
    </bean>

</beans>
           

spring整合Mybatis案例2:

  • 不写MyBatis.xml文件
    • 数据库的链接信息最终会给到SqlSessionFactory创建工厂对象
    • 在spring配置文件中读取jadcConfig.properties
    • 创建数据库连接源对象
    • 配置SqlSessionFactory的属性,设置别名,设置映射文件地址,设置最大连接和传入数据库连接源的ref, 达到spring 管理 sqlsessionfactory的目的
    • 通过MapperScannerConfigurer扫描器,产生代理对象(扫描映射文件信息)
    • 可使用spring的事务管理器
Spring整合Mybatis的两种方式及其案例分析、ssm的jar包整合Spring整合MyBatis框架的两种方式ssm几乎所有的jar包:

applicationContext.xml文件

<?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:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       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/aop
             http://www.springframework.org/schema/aop/spring-aop.xsd
             http://www.springframework.org/schema/tx
             http://www.springframework.org/schema/tx/spring-tx.xsd
             http://www.springframework.org/schema/mvc
             http://www.springframework.org/schema/mvc/spring-mvc.xsd">


    <!-- 加载properties配置文件 -->
    <!--一种是使用提供的注解进行得到配置群文件的内容,一直是通过一个PropertyPlaceholderConfigurer的Bean对象,把信息放到一个集合中-->
    <!--方式一:-->
    <context:property-placeholder location="classpath:jdbcConfig.properties"/>
    <!--方式二:-->
    <!--
        <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
            <property name="locations">
                <list>
                    <value>classpath:jdbcConfig.properties</value>
                </list>
            </property>
        </bean>
     -->


    <!-- 数据库连接池 -->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="${driver}" />
        <property name="url" value="${url}" />
        <property name="username" value="${username}" />
        <property name="password" value="${password}" />
    </bean>


    <!-- 配置SqlSessionFactory工程 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!-- 注入数据库连接 -->
        <property name="dataSource" ref="dataSource"></property>
        <!-- 设置映射文件地址 -->
        <!-- 当mybatis的xml文件和mapper接口不在相同包下时,需要用mapperLocations属性指定xml文件的路径。
         *是个通配符,代表所有的文件,**代表所有目录下 -->
        <!-- <property name="mapperLocations" value="classpath:路径"></property>-->
        <!-- 设置实体类别名(整个包) -->
        <property name="typeAliasesPackage" value="com.zy.domain"></property>
    </bean>

    <!-- mapper 扫描器 :扫描映射文件用来产生代理对象-->
    <!-- 扫描"com.zy.dao"包下的映射文件,配置dao对象 -->
    <!--MapperScannerConfigurer这是mybatis-spring提供的一个转换器,可以将映射接口转换为Spring容器中的Bean-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.zy.dao"></property>
    </bean>

    <!-- 启用注解扫描 -->
    <context:annotation-config></context:annotation-config>

</beans>
           

映射文件:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zy.dao.AccountDao">
    <select id="findAccounts"  resultType="account">
        select * from account;
    </select>
</mapper>
           

ssm几乎所有的jar包:

<?xml version="1.0" encoding="UTF-8"?>
<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.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>Maven高级_01_基于ssm的传统web案例</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<!--maven工程要导入jar包的坐标,就必须要考虑解决jar包冲突。
    解决jar包冲突的方式一:
        第一声明优先原则:哪个jar包的坐标在靠上的位置,这个jar包就是先声明的。
        先声明的jar包坐标下的依赖包,可以优先进入项目中。

    maven导入jar包中的一些概念:
    直接依赖:项目中直接导入的jar包,就是该项目的直接依赖包。
    传递依赖:项目中没有直接导入的jar包,可以通过项目直接依赖jar包传递到项目中去。

    解决jar包冲突的方式二:
    路径近者优先原则。直接依赖路径比传递依赖路径近,那么最终项目进入的jar包会是路径近的直接依赖包。

    解决jar包冲突的方式三【推荐使用】:
    直接排除法。
    当我们要排除某个jar包下依赖包,在配置exclusions标签的时候,内部可以不写版本号。
    因为此时依赖包使用的版本和默认和本jar包一样。
    -->
<!-- 统一管理jar包版本 -->
<properties>
    <spring.version>5.0.2.RELEASE</spring.version>
    <slf4j.version>1.6.6</slf4j.version>
    <log4j.version>1.2.12</log4j.version>
    <shiro.version>1.2.3</shiro.version>
    <mysql.version>8.0.20</mysql.version>
    <mybatis.version>3.4.5</mybatis.version>
    <spring.security.version>5.0.1.RELEASE</spring.security.version>
</properties>

<!--
maven工程是可以分父子依赖关系的。
凡是依赖别的项目后,拿到的别的项目的依赖包,都属于传递依赖。
比如:当前A项目,被B项目依赖。那么我们A项目中所有jar包都会传递到B项目中。
B项目开发者,如果再在B项目中导入一套ssm框架的jar包,对于B项目是直接依赖。
那么直接依赖的jar包就会把我们A项目传递过去的jar包覆盖掉。
为了防止以上情况的出现。我们可以把A项目中主要jar包的坐标锁住,那么其他依赖该项目的项目中,
即便是有同名jar包直接依赖,也无法覆盖。
-->
<!-- 锁定jar包版本 -->
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>${mybatis.version}</version>
        </dependency>
    </dependencies>
</dependencyManagement>

<!-- 导入项目依赖jar包 -->
<dependencies>
    <!-- spring -->
    <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjweaver</artifactId>
        <version>1.6.8</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aop</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context-support</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-orm</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-tx</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>${mysql.version}</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>jsp-api</artifactId>
        <version>2.0</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>jstl</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>
    <!-- log start -->
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>${log4j.version}</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${slf4j.version}</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>${slf4j.version}</version>
    </dependency>
    <!-- log end -->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>${mybatis.version}</version>
    </dependency>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis-spring</artifactId>
        <version>1.3.0</version>
    </dependency>
    <dependency>
        <groupId>c3p0</groupId>
        <artifactId>c3p0</artifactId>
        <version>0.9.1.2</version>
        <type>jar</type>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>com.github.pagehelper</groupId>
        <artifactId>pagehelper</artifactId>
        <version>5.1.2</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-web</artifactId>
        <version>${spring.security.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-config</artifactId>
        <version>${spring.security.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-core</artifactId>
        <version>${spring.security.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-taglibs</artifactId>
        <version>${spring.security.version}</version>
    </dependency>
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>1.0.9</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
    </dependency>
</dependencies>
<!-- 添加tomcat7插件 -->
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.tomcat.maven</groupId>
            <artifactId>tomcat7-maven-plugin</artifactId>
            <version>2.2</version>
        </plugin>
    </plugins>
</build>
</project>
           

继续阅读