LVS scipy 希腊字母 typora drupal model scripting webkit Select2 jquery去空格 js字符串排序 hbase端口 dplayer不能全屏 android入门实例 less的比较级 python学习教程 配置python环境 java新特性 java8教程 java怎么连接数据库 java中class java集合框架图 java异常处理 网页游戏代码 vbs脚本 tabletpc 马赛克软件 相机权限 美国地址生成器 多面硬币 苹果手机总是自动重启 0x00000057 语音分析软件 暴力猴插件 maven项目打包 cmd命令数字雨 方正兰亭粗黑字体下载 小程序游戏源码 txplatform kmplayer绿色版
当前位置: 首页 > 学习教程  > 编程语言

谈谈SqlSessionFactoryBean和MapperScannerConfigurer

2021/1/28 23:29:23 文章标签:

谈谈SqlSessionFactoryBean和MapperScannerConfigurer 这两个类会在我们使用dao的时候扫描的时候会用到,如果我们不想创建一个Mapper接口类的实现类的话(通常spring管理Mybatis的mapper对象的时候都需要创建一个接口实现类来做做对数据库的操作&#xf…

谈谈SqlSessionFactoryBean和MapperScannerConfigurer

这两个类会在我们使用dao的时候扫描的时候会用到,如果我们不想创建一个Mapper接口类的实现类的话(通常spring管理Mybatis的mapper对象的时候都需要创建一个接口实现类来做做对数据库的操作,不然没办法访问到Mapper.xml的代理类,这个代理类通常是SqlSession来创建的)
先给出代码


    <bean class="org.mybatis.spring.SqlSessionFactoryBean" id="sqlSessionFactory">
        <property name="dataSource" ref="dataSource"/>
        <property name="configLocation" value="classpath:mybatis-config.xml"/>
    </bean>



<!--    这里使用的是扫描-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer" id="configurer">
<!--这里其实就是在创建一个代理类,也就是接口实现类,并且有属性sqlSessionFactory和sqlSessionTemplate,这样就能完成对数据库的操作了-->
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
        <property name="basePackage" value="com.kuang.mapper"/>

    </bean>

这里的SqlSessionFactoryBean其实就是一个用来创建SqlFactory,它的原理就与Mybatis的工具类原理一样,它里面是有一个SqlSessionFactoryBuilder的,而且有一个读取xml的类,先读取了xml,然后把流交给SqlSessionFactoryBuilder来build()。

然后MapperScannerConfigurer就是一个扫描类,它需要一个
SqlSessionFactoryBean来创建factory和SqlSessionTemplate。然后它根据自己读取到的xml文件和对应的接口来创建一个代理类。这个代理类可以理解为就是我们之前创建的Mapper接口的实现类

Mapper接口的实现类代码:

package com.kuang.dao;

import com.kuang.pojo.Books;
import com.kuang.service.BookService;
import org.mybatis.spring.support.SqlSessionDaoSupport;

import java.util.List;

public class BooksMapperImpl extends SqlSessionDaoSupport implements BooksMapper {

    public void insertBook(Books books) {
        getSqlSession().getMapper(BooksMapper.class).insertBook(books);
    }

    public void deleteBook(int id) {
        getSqlSession().getMapper(BooksMapper.class).deleteBook(id);
    }

    public int updateBook(Books books) {
        return getSqlSession().getMapper(BooksMapper.class).updateBook(books);
    }

    public Books getBooksById(int id) {
        return getSqlSession().getMapper(BooksMapper.class).getBooksById(id);
    }

    public List<Books> getBooks() {
        return getSqlSession().getMapper(BooksMapper.class).getBooks();
    }
}

本文链接: http://www.dtmao.cc/news_show_650215.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?