精华内容
下载资源
问答
  • MyBatis和Spring整合

    2020-03-22 23:12:14
    今天来和大家分享一下MyBatis和Spring整合。 1. 整合的工程结构 首先我们来看下整合之后的工程结构是什么样的。 2. 配置文件 在于spring整合之前,mybatis都是自己管理数据源的,然后sqlSessionFactory是我们自己去...

    今天来和大家分享一下MyBatis和Spring整合。

    1. 整合的工程结构

    首先我们来看下整合之后的工程结构是什么样的。
    在这里插入图片描述

    2. 配置文件

    在于spring整合之前,mybatis都是自己管理数据源的,然后sqlSessionFactory是我们自己去注入的,现在整合了,这些都要交给spring来管理了,来看一下beans.xml文件中的配置:
    在这里插入图片描述
    跟spring和hibernate整合的情况差不多,都是通过properties文件加载数据库连接信息,然后导入配置文件配置一下sessionFactory,下面看看db.properties和SqlMapConfig.xml文件。在这里插入图片描述
    在这里插入图片描述

    3. dao方式开发的配置

    在最开始我们提到,mybatis中有两种开发方式,一种dao开发方式,一种mapper开发方式,后者用的比较多,但是不排除没有使用dao方式的,所以两种我都总结一下,首先看dao方式开发的配置。

    1)配置User.xml
    在sqlMap包中有个User.xml,里面是针对用户的操作的一些配置,这里是整合,所以我就写了一个statement,如下:
    在这里插入图片描述
    只是通过id查询用户,如果测试成功,说明整合成功,这里写完了后,别忘了在SqlMapConfig.xml中加载这个映射文件,但是上面已经加载过了,即。

    2)开发dao及其实现类
    接下来就是开发dao及其实现类了,就一个方法,通过id查询用户,先来看下dao的方法:
    在这里插入图片描述
    再看下实现类:在这里插入图片描述
    这里是重点:通过dao方式开发的话,dao的实现类在实现接口的同时,需要继承SqlSessionDaoSupport类,这个类中有获取SqlSession的方法,因为sqlSessionFactory已经在beans.xml文件中配置好了(下面有写),spring会自动注入进去,继承了SqlSessionDaoSupport类就可以直接通过getSqlSession()方法来获取sqlSession。然后就可以操作数据库了。

    3)配置dao
    上面也说了,要获取sqlSession必须得有sqlSessionFactory才行啊,这就需要spring来注入了,所以我们在beans.xml中配置一下该dao:在这里插入图片描述
    这样的话,dao开发方式就整合好了,下面来测试一下。在这里插入图片描述

    4. mapper方式开发的配置

    mapper方法开发的话,mapper.xml和mapper.java文件要放在一个包下,这里主要放在ssm.mapper的包下了,下面看一下两个文件:
    1)UserMapper.xml和UserMapper.java在这里插入图片描述
    在这里插入图片描述
    这个和之前的都一样,没什么难度,注意xml中的namespace要写成对应的java文件的完全限定名即可。

    2)配置beans.xml
    上面已经配置好了mapper的映射和接口了,那么如何由spring来产生一个代理对象呢?spring是通过MapperFactoryBean来创建代理对象的,看下面的配置:在这里插入图片描述
    从配置中可以看出,使用MapperFactoryBean来产生mapper的代理对象,首先要配置一个mapperInterface,即你要spring产生哪个mapper接口对应的代理对象,所以肯定要把我们刚刚写好的mapper接口的完全限定名给传进去,spring就知道要创建对应的代理对象了。当然,sqlSessionFactory是必不可少的,否则怎么产生sqlSession呢?

    但是问题来了,如果有很多个mapper接口咋整?那beans.xml中难道要写很多个这样的bean么?答案肯定不是这样,我们可以在beans.xml中通过扫描包即可,即告诉spring,你把指定的包中所有的mapper接口都给我生成一个代理对象出来,如下:
    在这里插入图片描述
    从上面的配置中可以看出,spring使用MapperScannerConfiger来进行mapper扫描的。要想扫描成功,必须遵循之前说的规范:即mapper.xml和mapper.java两个文件名必须保持一致,且在同一个目录下。这样的话,自动扫描出来的mapper的bean的id就为mapper类名的首字母小写。所以上面的bean没有id属性,因为这个是根据具体的mapper接口来的。basePackage是用来指定要扫描的包。这样就可以批量扫描mapper接口了。

    到这里,spring和mybatis就整合好了。

    展开全文
  • Mybatis和Spring整合

    2018-12-20 11:23:43
    Mybatis和Spring整合 mybatis-config.xml 用一个空文件就足够了 和数据库连接由spring管理 包扫描,别名也可以由spring配置 applicationContext.xml 数据库连接池 sqlSessionFactory对象 数据源 mybatis核心配置...

    Mybatis和Spring整合

    mybatis-config.xml

    用一个空文件就足够了
    和数据库连接由spring管理
    包扫描,别名也可以由spring配置

    applicationContext.xml
    • 数据库连接池
    • sqlSessionFactory对象
      数据源
      mybatis核心配置文件
      别名包扫描
    传统dao开发
    • 接口
    • 实现类,继承SqlSessionDaoSupport,实现接口
    • super.getSqlSession(); 就得到了SqlSession
    • 不能手动释放资源,也不需要commit
    动态代理的开发
    第一种配置方式
    • MapperFactoryBean(注入sqlSessionFactory)
    • 配置接口mapperInterface
    第二种配置方式

    配置包扫描:更简单,官方推荐

    • MapperScannerConfigurer
    • 配置basePackage,值为接口所在包路径,多个包用逗号分隔

    逆向工程

    pojo,Mapper可以不用自己写,由Mybatis根据数据库表自动生成

    逆向工程会用就行

    配置文件generatorConfig

    按自己的需求修改:

    • 连接信息
    • 生成po的路径名,生成Mapper的路径名
    • 指定数据表

    逆向工程只能处理单表操作

    UserExample类
    • 很复杂,会用就行
    • UserExample用于拼装查询条件
    • 创建criteria:example.createCriteria()
    • 设置查询条件:criteria.andUsernameLike("%张%");
    • UserExample 的带selective的方法有非空处理
    展开全文
  • mybatis和spring 整合

    2017-07-22 22:48:51
    在实际工作中,很多项目都是采用spring容器来管理对象。本文主要讲述mybatis和spring整合过程

    0 概述

    在实际工作中,很多项目都是采用spring容器来管理对象。本文主要讲述mybatis和spring整合过程。

    1 整合过程

    首先要知道 Mybatis原始dao开发流程,具体见Mybatis原始的dao开发。
    所谓的整合也就是:

    • spring 容器通过单例模式来管理SqlSessionFactory,使用SqlSessionFactory创建SqlSession。
    • 持久层mapper代理对象生成与管理
        <!-- mybatis 整合包-->
                <dependency>
                    <groupId>org.mybatis</groupId>
                    <artifactId>mybatis-spring</artifactId>
                    <version>1.3.1</version>
                </dependency>

    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:context="http://www.springframework.org/schema/context"
           xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-3.2.xsd">
    
        <context:property-placeholder location="db.properties"></context:property-placeholder>
        <!--使用mybatis 自带的连接池-->
        <bean id="pooledDataSource" class="org.apache.ibatis.datasource.pooled.PooledDataSource">
            <property name="driver" value="${jdbc.driver}" />
            <property name="url" value="${jdbc.url}" />
            <property name="username" value="${jdbc.username}" />
            <property name="password" value="${jdbc.password}" />
        </bean>
        <!--配置 sqlSessionFactory-->
        <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
            <property name="mapperLocations" value="classpath*:sqlmap/*Mapper.xml" />
            <property name="dataSource" ref="pooledDataSource"></property>
        </bean>
        <!--单个Mapper 代理对象生成-->
        <!--<bean id="mapperFactoryBean" class="org.mybatis.spring.mapper.MapperFactoryBean">-->
            <!--<property name="mapperInterface" value="com.hsc.dao.UserMapper"></property>-->
            <!--<property name="sqlSessionFactory" ref="sqlSessionFactory"></property>-->
        <!--</bean>-->
    
        <!--mapper 批量扫描 生成mapper 的Mapper代理对象-->
        <bean id="mapperScanner" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
            <property name="basePackage" value="com.hsc.dao"></property>
        </bean>
    
    
    </beans>

    db.properties

    jdbc.driver=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql://127.0.0.1:3306/test
    jdbc.username=mysql
    jdbc.password=test

    UserMapper.xml

    <?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.hsc.dao.UserMapper">
    
        <sql id="Base_Column_List">
            `id`,`userId`,`name`
        </sql>
    
        <select id="findUserInfoById" parameterType="java.lang.Long" resultType="com.hsc.entity.User">
            SELECT <include refid="Base_Column_List" /> FROM user WHERE id=#{userId}
        </select>
    </mapper>

    测试程序:

    package com.hsc.study;
    
    import com.hsc.dao.BookMapper;
    import com.hsc.dao.UserMapper;
    import com.hsc.entity.Book;
    import com.hsc.entity.User;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    /**
     * Created by hsc on 17/7/22.
     */
    public class Test {
    
        public static void main(String[] args) {
            ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
            UserMapper userMapper = applicationContext.getBean("userMapper", UserMapper.class);
            BookMapper bookMapper = applicationContext.getBean("bookMapper", BookMapper.class);
    
            User user = userMapper.findUserInfoById(1);
            Book book=new Book();
            book.setName("mysql");
            bookMapper.insert(book);
            System.out.println("id"+book.getId());
            System.out.printf(user.toString());
    
        }
    }
    

    2 代码

    代码:code

    展开全文
  • mybatis和spring整合

    2016-06-27 12:10:43
    实现mybatis与spring进行整合,通过spring管理SqlSessionFactory、mapper接口。...mybatis官方提供与mybatisspring整合jar包: 还包括其它jar: spring3.2.0 mybatis3.2.7 dbcp连接池 数据库驱动 2 My

    实现mybatis与spring进行整合,通过spring管理SqlSessionFactory、mapper接口。

     

    1    mybatis与spring整合jar

     

    mybatis官方提供与mybatis与spring整合jar包:



    还包括其它jar:

    spring3.2.0

    mybatis3.2.7

    dbcp连接池

    数据库驱动

    2    Mybatis配置文件

    在classpath下创建mybatis/SqlMapConfig.xml

     

    <?xmlversion="1.0"encoding="UTF-8"?>

    <!DOCTYPEconfiguration

    PUBLIC"-//mybatis.org//DTD Config 3.0//EN"

    "http://mybatis.org/dtd/mybatis-3-config.dtd">

    <configuration>

     

    <!—使用自动扫描器时,mapper.xml文件如果和mapper.java接口在一个目录则此处不用定义mappers -->

    <mappers>

    <packagename="com.hsl.mybatis.mapper" />

    </mappers>

    </configuration>

     

     

    3    Spring配置文件:

             在classpath下创建applicationContext.xml,定义数据库链接池、SqlSessionFactory。

     

    <beansxmlns="http://www.springframework.org/schema/beans"

       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:mvc="http://www.springframework.org/schema/mvc"

       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-3.2.xsd

          http://www.springframework.org/schema/mvc

          http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd

          http://www.springframework.org/schema/context

          http://www.springframework.org/schema/context/spring-context-3.2.xsd

          http://www.springframework.org/schema/aop

          http://www.springframework.org/schema/aop/spring-aop-3.2.xsd

          http://www.springframework.org/schema/tx

          http://www.springframework.org/schema/tx/spring-tx-3.2.xsd">

    <!--加载配置文件 -->

    <context:property-placeholderlocation="classpath:db.properties"/>

    <!--数据库连接池 -->

    <beanid="dataSource"class="org.apache.commons.dbcp.BasicDataSource"destroy-method="close">

           <property name="driverClassName"value="${jdbc.driver}"/>

          <property name="url"value="${jdbc.url}"/>

          <property name="username"value="${jdbc.username}"/>

          <property name="password"value="${jdbc.password}"/>

          <property name="maxActive"value="10"/>

          <property name="maxIdle"value="5"/>

    </bean>  

    <!--mapper配置 -->

       <!-- spring管理sqlsessionfactory使用mybatisspring整合包中的 -->

       <beanid="sqlSessionFactory"class="org.mybatis.spring.SqlSessionFactoryBean">

          <!-- 数据库连接池 -->

          <property name="dataSource"ref="dataSource"/>

          <!-- 加载mybatis的全局配置文件 -->

          <property name="configLocation"value="classpath:mybatis/SqlMapConfig.xml"/>

       </bean>

     

    </beans>

     

     

    注意:在定义sqlSessionFactory时指定数据源dataSource和mybatis的配置文件。

     

    4    Mapper编写的三种方法

    4.1  Dao接口实现类继承SqlSessionDaoSupport

    使用此种方法即原始dao开发方法,需要编写dao接口,dao接口实现类、映射文件。

     

    1、  在sqlMapConfig.xml中配置映射文件的位置

    <mappers>

      <mapper resource="mapper.xml文件的地址" />

    <mapper resource="mapper.xml文件的地址" />

    </mappers>

     

    2、  定义dao接口

     

    3、 dao接口实现类集成SqlSessionDaoSupport

     

    dao接口实现类方法中可以this.getSqlSession()进行数据增删改查。

     

    4、  spring 配置

     

    <beanid=" " class="mapper接口的实现">

        <propertyname="sqlSessionFactory" ref="sqlSessionFactory"></property>

        </bean>

     

     

    4.2  使用org.mybatis.spring.mapper.MapperFactoryBean

             此方法即mapper接口开发方法,只需定义mapper接口,不用编写mapper接口实现类。每个mapper接口都需要在spring配置文件中定义。

     

    1、  在sqlMapConfig.xml中配置mapper.xml的位置

    如果mapper.xml和mappre接口的名称相同且在同一个目录,这里可以不用配置

    <mappers>

      <mapper resource="mapper.xml文件的地址" />

    <mapper resource="mapper.xml文件的地址" />

    </mappers>

     

    2、  定义mapper接口

     

     

    3、  Spring中定义

    <beanid=""class="org.mybatis.spring.mapper.MapperFactoryBean">

        <propertyname="mapperInterface"value="mapper接口地址"/>

    <propertyname="sqlSessionFactory"ref="sqlSessionFactory"/>

        </bean>

     

    4.3  使用mapper扫描器

             此方法即mapper接口开发方法,只需定义mapper接口,不用编写mapper接口实现类。只需要在spring配置文件中定义一个mapper扫描器,自动扫描包中的mapper接口生成代代理对象。

     

    1、  mapper.xml文件编写,

     

    2、  定义mapper接口

     

    注意mapper.xml的文件名和mapper的接口名称保持一致,且放在同一个目录

     

    3、  配置mapper扫描器

    <beanclass="org.mybatis.spring.mapper.MapperScannerConfigurer">

     <propertyname="basePackage"value="mapper接口包地址"></property>

    <propertyname="sqlSessionFactoryBeanName"value="sqlSessionFactory"/>

        </bean>

    basePackage:扫描包路径,中间可以用逗号或分号分隔定义多个包

    4、  使用扫描器后从spring容器中获取mapper的实现对象

     

             如果将mapper.xmlmapper接口的名称保持一致且放在一个目录则不用在sqlMapConfig.xml中进行配置


    展开全文
  • Mybatis和spring整合

    2018-07-19 09:52:11
    一、mybatisspring整合jar(包含springMVC): 二、Mybatis配置文件  在classpath下创建mybatis/SqlMapConfig.xml &lt;?xml version="1.0" encoding="UTF-8" ?&gt; &lt;!...
  • mybatis和spring整合jar包

    2017-06-18 22:52:34
    mybatis和spring整合jar包
  • mybatis和spring 整合的Demo,具体可以参考本人博客
  • MyBatis和Spring整合jar: mybatis-3.2.7.jar mybatis-spring-1.2.2.jar
  • mybatis和spring整合jar

    2013-02-06 11:12:29
    mybatis-spring-1.2.0-SNAPSHOT-bundle mybatis和spring 整合的jar
  • mybatis和spring整合

    2013-07-20 11:05:43
    mybatis和spring整合包,欢迎各位下载
  • mybatis和spring整合方式-带注解,个人经验总结,适合新手学习,欢迎下载
  • Mybatis和Spring整合&逆向工程 Mybatis和Spring整合 mybatis整合Spring的思路 目的就是将在SqlMapConfig.xml中的配置移植到Spring的applicationContext.xml文件中 让spring管理SqlSessionFactory 让spring管理...
  • MyBatis和Spring整合详解: 智勇! 你在吗?点个赞走吧!认真听讲!靠你了。别睡了… 言归正传,正片开始… // 本章介绍:MyBatis和Spring整合,会有两种方法,这里使用了两个项目如有不明白的可以下载/资源—— 点击. ...
  • 【MyBatis学习14】MyBatis和Spring整合

    万次阅读 多人点赞 2016-06-16 22:07:26
    这都是老掉牙的问题了,不管是开发还是整合,首先环境肯定得有,环境嘛,除了java环境和开发环境外,那就是jar包咯,关于mybatis和spring整合的jar包,我已经上传到下载频道了==&gt;传送门 将这

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,635
精华内容 4,254
关键字:

mybatis和spring整合

spring 订阅