Spring boot和MyBatis的整合
来源:互联网 发布:苏州淘宝模特招聘 编辑:程序博客网 时间:2024/05/21 07:51
Spring Boot和MyBatis的整合有两种方案:
1. 使用MyBatis官方提供的Spring Boot整合包实现,地址:https://github.com/mybatis/spring-boot-starter
2. 使用MyBatis和Spring的整合方式,也就是我们常规的整合方式。
推荐使用第二种,第一种在做后续的扩展不太方便,采用第二种,详细代码如下
第一步:创建MyBatis的配置文件
Spring Boot所谓的零配置是指和Spring相关的配置零配置,尽可能省去一切和Spring相关xml配置,但是MyBatis自身的配置还是要的,它和Spring有没有啥关系,只不过两者进行整合,但它还是一个独立的个体,配置MyBatis的基本xml文件:mybatis-config.xml。
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration> <!-- springboot省去的xml是指不需要Spring相关的xml配置,MyBatis自己的xml配置还是要保留 --> <settings> <!-- 驼峰的自动映射 --> <setting name="mapUnderscoreToCamelCase" value="true" /> </settings> <plugins> <plugin interceptor="com.github.pagehelper.PageHelper"> <property name="dialect" value="mysql" /> <!-- 设置为true时,使用RowBounds分页会进行count查询 --> <property name="rowBoundsWithCount" value="true" /> </plugin> <plugin interceptor="com.github.abel533.mapperhelper.MapperInterceptor"> <!--主键自增回写方法,默认值MYSQL,详细说明请看文档 --> <property name="IDENTITY" value="MYSQL" /> <!--通用Mapper接口,多个通用接口用逗号隔开 --> <property name="mappers" value="com.github.abel533.mapper.Mapper" /> </plugin> </plugins></configuration>
第二步:配置数据源
MyBatis是对数据库的操作,涉及到连接池,所以需要数据源,可以直接在Spring Boot的启动类中进行配置
package com.hhu.cart;import javax.sql.DataSource;import org.springframework.beans.factory.annotation.Value;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.PropertySource;import com.jolbox.bonecp.BoneCPDataSource;@Configuration@SpringBootApplication//@ComponentScan(basePackages="com.hhu")@PropertySource(value={"classpath:env.properties","classpath:httpclient.properties","classpath:jdbc.properties","classpath:log4j.properties"}, ignoreResourceNotFound=true)public class TaotaoApplication { @Value("${jdbc.username}") private String jdbcUsername; @Value("${jdbc.password}") private String jdbcPassword; @Value("${jdbc.url}") private String jdbcUrl; @Value("${jdbc.driverClassName}") private String jdbcDriverClassName; @Bean(destroyMethod="close") public DataSource dataSource() { BoneCPDataSource boneCPDataSource = new BoneCPDataSource(); boneCPDataSource.setUsername(jdbcUsername); boneCPDataSource.setPassword(jdbcPassword); boneCPDataSource.setJdbcUrl(jdbcUrl); boneCPDataSource.setDriverClass(jdbcDriverClassName); //设置和数据库连接池中空间连接的时间剪个,默认240,如果取消则设为0 boneCPDataSource.setIdleConnectionTestPeriodInMinutes(60); //设置连接池中未使用的连接最大存活时间,默认值60,如果永远存活则设为0 boneCPDataSource.setIdleMaxAgeInMinutes(30); //每个分区最大的连接数 boneCPDataSource.setMaxConnectionsPerPartition(100); //每个区最小的连接数 boneCPDataSource.setMinConnectionsPerPartition(5); return boneCPDataSource; } public static void main(String[] args) { SpringApplication.run(TaotaoApplication.class, args); }}
第三步:配置Spring对MyBatis管理的配置
这一步其实就是通过Spring对MyBatis的管理获取SqlSessionFactoryBean,代码如下:
package com.hhu.cart.spring.config;import javax.sql.DataSource;import org.mybatis.spring.SqlSessionFactoryBean;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.core.io.Resource;import org.springframework.core.io.support.PathMatchingResourcePatternResolver;import org.springframework.core.io.support.ResourcePatternResolver;/** * MyBatis和Spring的整合,以往多是xml的配置方式,这里改为注解的方式 * @author Weiguo Liu * @data 2017年11月27日 */@Configurationpublic class MyBatisConfig { /* * 在Application中创建了DateSource,这里配置MyBatis时直接注入即可 * 如果这里不使用@Autowired注入,那么在下面sqlSessionFactoryBean * 方法中可以直接以形参的方式直接写,Spring会自动注入 */ @Autowired private DataSource dataSource; /* * 主要作用就是创建这个SqlSessionFactory */ @Bean @ConditionalOnMissingBean //当容器里没有指定的Bean的情况下创建该对象 public SqlSessionFactoryBean sqlSessionFactoryBean() { SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean(); // 设置数据源 sqlSessionFactoryBean.setDataSource(dataSource); // 设置mybatis的主配置文件 ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(); Resource mybatisConfigXml = resolver.getResource("classpath:mybatis/mybatis-config.xml"); sqlSessionFactoryBean.setConfigLocation(mybatisConfigXml); // 设置别名包 sqlSessionFactoryBean.setTypeAliasesPackage("com.hhu.cart.pojo"); return sqlSessionFactoryBean; }}
第四步:配置MyBatis的扫描类
MyBatis对数据库的操作少不了SQL语句的mapper文件,这里主要实现对mapper文件的扫描。
package com.hhu.cart.spring.config;import org.mybatis.spring.mapper.MapperScannerConfigurer;import org.springframework.boot.autoconfigure.AutoConfigureAfter;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;@Configuration//知名它是一个配置类@AutoConfigureAfter(MyBatisConfig.class) //保证在MyBatisConfig实例化(存在SqlSessionFactory)之后再实例化该类public class MapperScannerConfig { // mapper接口的扫描器 @Bean public MapperScannerConfigurer mapperScannerConfigurer() { MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer(); mapperScannerConfigurer.setBasePackage("com.hhu.cart.mapper"); return mapperScannerConfigurer; }}
其他的和以前的SSM整合大同小异
阅读全文
0 0
- spring boot和mybatis的整合
- Spring boot和MyBatis的整合
- spring boot和mybatis整合
- Spring Boot 整合 Mybatis 和 MySQL
- Spring Boot整合MyBatis和Druid
- 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
- eclipse 遇到8080端口被占用的情况
- 浅谈压缩感知(三):几何解释
- 安装JDK、安装TOMCAT
- C#初识 09值类型和引用类型
- linux 进程间通信 信号量
- Spring boot和MyBatis的整合
- ATECC508A芯片开发笔记(八):ECDH算法配置方法、执行过程及实现原理
- leetCode-Third Maximum Number
- GC常用算法
- java异常
- HTML总结 HTML详细介绍重要知识点
- 关于Presentation Error的一点经验
- 0-1背包问题从复杂到简单的优化历程
- LeetCode#1-TwoSum