MyBatis + Spring Boot
来源:互联网 发布:苏宁易购淘宝旗舰店 编辑:程序博客网 时间:2024/06/06 20:34
MyBatis-Spring-Boot-Starter有助于基于Spring Boot快速搭建MyBatis应用程序,使用该模块,可以做到以下几件事情:
1)构建独立的应用程序;
2)降低到几乎为零;
3)更少XML配置文件
安装
为使用Mybatis-Spring-Boot-Starter模块,仅仅需要在类路径上包含mybatis-spring-boot-autoconfigure.jar文件及其依赖关系(mybatis.jar、mybatis-spring.jar等等)
如果使用Maven,只要将下述依赖关系添加至pom.xml中:
<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.1-SNAPSHOT</version></dependency>
如果使用gradle,添加如下至build.gradle:
dependencies { compile("org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.1-SNAPSHOT")}
快速启动
正如也许已经知道的那样,为使用Spring与Mybatis,需要至少一个SqlSessionFactory与至少一个mapper接口。
Mybatis-Spring-Boot-Starter会:
1)自动检测已存在的DataSource;
2) 创建并注册一个SqlSessionFactory实例,使用SqlSessionFactoryBean传递DataSource作为入参;
3)创建并注册一个SqlSessionFactory获取的SqlSessionTemplate实例
4)自动扫描mappers映射器,将其连接至SqlSessionTemplate,并注册到Spring上下文中,一边可以注入到实体类中
假设有以下mapper映射器:
@Mapperpublic interface CityMapper { @Select("SELECT * FROM CITY WHERE state = #{state}") City findByState(@Param("state") String state);}
仅仅需要创建一个通常的Spring Boot应用程序,并像下面那样注入量映射器(Spring 4.3+版本可用):
@SpringBootApplicationpublic class SampleMybatisApplication implements CommandLineRunner { private final CityMapper cityMapper; public SampleMybatisApplication(CityMapper cityMapper) { this.cityMapper = cityMapper; } public static void main(String[] args) { SpringApplication.run(SampleMybatisApplication.class, args); } @Override public void run(String... args) throws Exception { System.out.println(this.cityMapper.findByState("CA")); }}
这就是所要做的全部事情,现在应用程序可以像通常的Spring Boot应用程序那样运行。
高级扫描
Mybatis-Spring-Boot-Starter会默认扫描带有@Mapper注解的映射器,也许会想指定扫描某一个自定义注解或者标记接口。如果是这样的话,那么必须使用@MapperScan注解。
Mybatis-Spring-Boot-Starter不会启动扫描进程,如果在Spring上下文中找到至少一个MapperFactoryBean,所以如果想要停止扫描,应该直接用@Bean方法注册映射器。
使用SqlSession
SqlSessionTemplate实例创建并添加至Spring上下文中,如果像下面那样注入实体(Spring 4.3+可用),可以使用MyBatis API:
@Componentpublic class CityDao {private final SqlSession sqlSession;public CityDao(SqlSession sqlSession) {this.sqlSession = sqlSession;}public City selectCityById(long id) {return this.sqlSession.selectOne("selectCityById", id);}}
配置
和其他Spring Boot应用程序一样,MyBatis-Spring-Boot应用程序的参数存放在application.propertis(或者applicaton.yml)文件之中:
Mybatis给其特性使用前缀mybatis,可用特性如下表所示:
特性 描述
config-location MyBatis xml配置文件位置
check-config-location 表示是否对Mybatis xml配置文件执行存在性检测
mapper-locations Mapper xml配置文件位置
type-aliases-package 寻找类型别名的包(包分隔符为",;\t\n")
type-handlers-package 寻找类型处理器的包(包分隔符为",;\t\n")
executor-type 执行类型:SIMPLE\REUSE\BATCH
configuration-properties MyBatis应用程序外部特性,指定的特性可用作MyBatis 配置文件与Mapper文件内占位符
configuration MyBatis配置实体类,该特性不能与config-location一起使用
示例:
# application.propertiesmybatis.type-aliases-package=com.example.domain.modelmybatis.type-handlers-package=com.example.typehandlermybatis.configuration.map-underscore-to-camel-case=truemybatis.configuration.default-fetch-size=100mybatis.configuration.default-statement-timeout=30...# application.ymlmybatis: type-aliases-package: com.example.domain.model type-handlers-package: com.example.typehandler configuration: map-underscore-to-camel-case: true default-fetch-size: 100 default-statement-timeout: 30...
使用自定义配置
Mybatis-Spring-Boot-Starter提供使用Java配置的自动配置生成自定义MyBatis配置方式,会自动查找实现ConfigurationCustomizer接口的实体类体类,调用自定义MyBatis配置的方法(1.2.1以上版本可用)
// @Configuration class@BeanConfigurationCustomizer mybatisConfigurationCustomizer() { return new ConfigurationCustomizer() { @Override public void customize(Configuration configuration) { // customize ... } };}
检测MyBatis组件
检测实现MyBatis提供的以下接口的实体类
Interceptor
DatabaseIdProvider
参考官网:Spring Boot集成MyBatis
阅读全文
0 0
- Spring boot Mybatis
- Spring Boot 集成MyBatis
- spring boot mybatis
- Spring Boot + mybatis 开发
- Spring Boot 集成Mybatis
- spring-boot集成mybatis
- Spring Boot整合MyBatis
- spring boot 整合mybatis
- Spring Boot整合MyBatis
- Spring-boot整合Mybatis
- Spring boot集成Mybatis
- Spring Boot整合MyBatis
- spring boot mybatis
- spring boot+Mybatis
- spring boot 整合mybatis
- Spring Boot 集成MyBatis
- spring boot集成mybatis
- spring-boot-mybatis
- Android UI根据屏幕分辨率决定加载布局
- Android选择控件,CheckBox和RadioButton使用大全
- calc()实现CSS响应式布局
- 2017 Multi-University Training Contest
- Lucas模板 hdu3037
- MyBatis + Spring Boot
- 关于java调用js,document不能用问题
- 大顶堆和小顶堆--Java版
- 静默安装oracle11g
- react-navigation的使用
- HDOJ1412 排序水题
- JVM分为哪些区,每一个区干吗的?
- 卷积神经网络CNN(基础理论)
- Webpack学习笔记