• spring-boot与mybatis整合优化介绍


    SpringBoot官方文档http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/

    关于spring-boot与mybatis整合优化方面的介绍,就是Mybatis-Spring-boot-starter的介绍:

    1、取消spring-mybatis.xml配置

    ①自动检测已存在的Datasource

    之前,需要在spring-mybatis.xml中配置datasource的Bean,现在只需要在application.yml中配置到spring.datasource节点下就可以。因为mybatis-spring-boot支持自动检测已存在的Datasource。

    ②将创建并注册SqlSessionFactoryBean实例,并传入Datasource。

    在mybatis中,sqlsession可以有SqlSessionFactory创建;而在mybatis-spring中则需要SqlSessionFactoryBean来创建,并传入datasource。

    如:

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

    现在,mybatis-spring-boot支持自动创建并注册SqlSessionFactoryBean,所以以上的配置都不需要了。

    ③将从SqlSessionFactoryBean中创建并注册SqlSessionTemplate

    SqlSessionTemplate是SqlSession的实现类,较SqlSession的默认实现类DefaultSqlSession来说,是线程安全的。

    在mybatis-spring中需要如下配置:

    <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate"> 
    <constructor-arg index="0" ref="sqlSessionFactory" /> 
    </bean> 

    现在,mybatis-spring-boot支持自动创建并注册SqlSessionTemplate,所以不需要以上配置了。
    SqlSession对象注入,如下:

    @Autowired
    private SqlSession sqlSession;
    //真不知道既然下面④都能注入mappers了,那还要SqlSession对象有什么用。。

    ④自动扫描mappers,将其关联到SqlSessionTemplate,并将mappers注册到spring容器中,以便注入到我们的beans中。

    默认情况下,mybatis-spring-boot将搜索被@Mapper注释标注的mappers。

    文档中描述可以用mybatis-spring提供的@MapperScan标注,但我不会用。

    Mybatis-Spring文档中解释@MapperScan注释跟配置MapperScannerConfigurer是同样的效果:

    public @interface MapperScan Use this annotation to register MyBatis mapper interfaces when using Java Config. It performs when same work as MapperScannerConfigurer via MapperScannerRegistrar.

    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="com.example.mappers" />
    <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
    </bean>

    现在,mybatis-spring-boot支持使用@Mapper注释标注mappers接口类了,所以就不需要上述配置。
    //其实感觉上述配置还是挺好的,不用每个mapper接口都注释@Mapper。。。

    @Mapper标注使用如下:

    @Mapper
    public interface UserMapper {
    UserInfo queryUser(@Param(value = "userId") int id);
    }

    那么在mybatis-spring-boot中需要配置的是mapper.xml目录:

    mybatis:
    mapper-locations: classpath:mapper/*.xml
    
  • 相关阅读:
    JIRA 6.3.6安装
    Mac安装Protobuf
    Linux 磁盘测速
    rsync快速删除海量文件
    Linux 修改主机名
    查看java进程中哪个线程在消耗系统资源
    redis安装
    springmvc返回中文乱码问题
    java.lang.NumberFormatException: multiple points问题
    谈谈java多线程(一)
  • 原文地址:https://www.cnblogs.com/yunianzeng/p/11825574.html
Copyright © 2020-2023  润新知