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
总结
以上所述是小编给大家介绍的spring Boot与Mybatis整合优化详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
相关文章
Java 11 正式发布,这 8 个逆天新特性教你写出更牛的代码
美国当地时间9月25日,Oracle 官方宣布 Java 11 (18.9 LTS) 正式发布,可在生产环境中使用!这是自 Java 8 后的首个长期支持版本2018-09-09
SpringSecurity报错authenticationManager must be 
这篇文章主要介绍了SpringSecurity报错authenticationManager must be spec的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-11-11
详解在SpringBoot中使用MongoDb做单元测试的代码
这篇文章主要介绍了详解在SpringBoot中使用MongoDb做单元测试的代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-11-11
springboot中使用jpa下hibernate的ddl-auto方式
这篇文章主要介绍了springboot中使用jpa下hibernate的ddl-auto方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-02-02
mybatis-plus IdWorker生成的Id和返回给前台的不一致的解决
这篇文章主要介绍了mybatis-plus IdWorker生成的Id和返回给前台的不一致的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2021-03-03


最新评论