SpringBoot第二弹SpringBoot+Mybatis+Druid集成

5 篇文章 0 订阅
5 篇文章 0 订阅

上一篇文章,我们讲了,快速搭建SpringBoot和体验SpringBoot 点击打开链接

今天来做SpringBoot对Mybatis+Druid+Mybatis的集成配置

添加依赖包:

注意:不要有包冲突,不要再有Spring相关的版本配置(如果在properties中配置了spring的相关版本信息,则启动失败)

2018-03-19 23:08:01.446  WARN 21836 --- [           main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanDefinitionStoreException: Failed to process import candidates for configuration class [org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration]; nested exception is java.lang.NoSuchMethodError: org.springframework.util.Assert.state(ZLjava/util/function/Supplier;)V
java.lang.IllegalStateException: ApplicationEventMulticaster not initialized - call 'refresh' before multicasting events via the context: org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@47542153: startup date [Mon Mar 19 23:08:00 CST 2018]; root of context hierarchy
<properties>
	<mybatis.version>3.4.1</mybatis.version>
	<mybatis.spring.version>1.3.1</mybatis.spring.version>
	<mysql.version>5.1.38</mysql.version>
</properties>
<!-- 对数据库操作的一些依赖,包括提供了数据源,连接池,事务等一些持久层的支持 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-jdbc</artifactId>
		</dependency>
		
		<!-- data source -->
		<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
		<dependency>
		    <groupId>com.alibaba</groupId>
		    <artifactId>druid</artifactId>
		    <version>1.1.6</version>
		</dependency>
		
		<!-- mybatis -->
		<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
		<dependency>
		    <groupId>org.mybatis</groupId>
		    <artifactId>mybatis</artifactId>
		    <version>${mybatis.version}</version>
		</dependency>
		
		<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
		<dependency>
		    <groupId>org.mybatis</groupId>
		    <artifactId>mybatis-spring</artifactId>
		    <version>${mybatis.spring.version}</version>
		</dependency>
		
		<!-- mysql -->
		<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
		<dependency>
		    <groupId>mysql</groupId>
		    <artifactId>mysql-connector-java</artifactId>
		    <version>${mysql.version}</version>
		</dependency>

创建SpringBoot入口文件(ApplicationEntrance.java):

推荐放置在顶层包(root包)中。

不过也可以根据个人喜好放置到其它包中。不过需要手动设置指定从哪里开始扫描。

//SpringBoot的核心注解,在入口类上配置,也可以单纯地认为它就是一个入口注解
//里面包含@EnableAutoConfiguration注解,用来开启自动配置,可以让springboot根据导入的包依赖来猜测需要什么样的配置,对项目进行自动配置。
//@EnableAutoConfiguraion会自动从使用该注解的类所在的包及其子包进行扫描。(例如com.test.A.java用了该注解
//那么会从test向下[包含testbao]进行扫描,test包以外的不进行扫描。)
@SpringBootApplication(scanBasePackages="boot")
public class ApplicationEntrance {
	
	private static Logger log = Logger.getLogger(ApplicationEntrance.class);
	
	public static void main(String[] args) {
		SpringApplication.run(ApplicationEntrance.class, args);
		log.info("SpringBoot启动!");
	}
	
}
创建配置项(ApplicationDruidConfig.java[数据源],ApplicationMybatisConfig.java[mybatis相关配置])在resource目录下添加jdbc.properties文件:

ApplicationDruidConfig.java

//说明这是一个配置文件
@Configuration
//用来引入properties文件
@PropertySource(value = "jdbc.properties")
public class ApplicationDruidConfig {

	
	@Value("${jdbc.username}")
	private String username;
	
	@Value("${jdbc.password}")
	private String password;
	
	@Value("${jdbc.url}")
	private String jdbcUrl;
	
	@Value("${jdbc.driver}")
	private String driverClass;
	
	@Value("${jdbc.initialSize}")
	private int initialSize;
	
	@Value("${jdbc.maxActive}")
	private int maxActive;
	
	@Value("${jdbc.minIdle}")
	private int minIdle;
	
	@Value("${jdbc.maxWait}")
	private long maxWait;
	
	@Value("${jdbc.timeBetweenEvictionRunsMillis}")
	private long timeBetweenEvictionRunsMillis;
	
	@Value("${jdbc.minEvictableIdleTimeMillis}")
	private long minEvictableIdleTimeMillis;
	
	@Bean(name="dataSource")
        //因为SpringBoot也为我们提供了一个默认的datasource,可谓贴心,当我们需要自己的连接池的时候,可以使用@primary注解,告诉Springboot
        //优先使用我们自己的DataSource
	@Primary
	public DataSource dataSource() {
		DruidDataSource dataSource = new DruidDataSource();
		dataSource.setDriverClassName(driverClass);;
		dataSource.setUrl(jdbcUrl);
		dataSource.setUsername(username);
		dataSource.setPassword(password);
		dataSource.setInitialSize(initialSize);
		dataSource.setMaxActive(maxActive);
		dataSource.setMinIdle(minIdle);
		dataSource.setMaxWait(maxWait);
		dataSource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
		dataSource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
		return dataSource;
	}
}

ApplicationMybatisConfig.java

@Configuration
public class ApplicationMybatisConfig {
	
	//这里在测试的时候使用Autowired的方式无法注入
	//@Autowired
	//DataSource dataSource;
	//以参数传进的方式,springboot会根据引用自动地注入dataSource
	@Bean(name="sqlSessionFactory")
	public SqlSessionFactoryBean sqlSessionFactory(DataSource dataSource) throws Exception {
		
		SqlSessionFactoryBean sqlSessionFactory = new SqlSessionFactoryBean();
		ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
		Resource[] mapperXmlResource = resolver.getResources("classpath:mapper/*/*Mapper.xml");
		
		sqlSessionFactory.setDataSource(dataSource);
		sqlSessionFactory.setMapperLocations(mapperXmlResource);
		sqlSessionFactory.setTypeAliasesPackage("boot.po");
		return sqlSessionFactory;
	}
	
	@Bean
	public MapperScannerConfigurer mapperScannerConfigurer() {
		
		MapperScannerConfigurer msc = new MapperScannerConfigurer();
		
		msc.setBasePackage("boot.dao");
		msc.setSqlSessionFactoryBeanName("sqlSessionFactory");
		
		return msc;
		
	}
	
}

jdbc.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/elearning?useUnicode=true&characterEncoding=UTF-8&serverTimeZone=GMT&useSSL=false
jdbc.username=root
jdbc.password=root
jdbc.initialSize=20
jdbc.minIdle=100
jdbc.maxActive=1

jdbc.maxWait=6000
jdbc.timeBetweenEvictionRunsMillis=3000
jdbc.minEvictableIdleTimeMillis=3000

controller,service,dao,po,mapper的写法照旧。

启动测试 :

选择入口类,运行java程序。便可以进行访问测试。


  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值