Spring Boot 框架学习(二)----数据访问(MyBatis)

Spring Boot 数据访问--MyBatis

  • Spring Boot starter

Spring Boot中,定义了很多的starter。可以认为starter是一种服务,—使得使用某个功能的开发者不需要关注各种依赖库的处理,不需要具体的配置信息,由Spring Boot通过自动配置,到classpath路径下发现需要的Bean,并将这些Bean加入到Spring Context容器中。

举个例子,spring-boot-starter-jdbc这个starter的存在,使得我们只需要在其它Bean中用@Autowired引入DataSource的bean,Spring Boot会自动创建DataSource的实例。

  • spring-boot-starter-jdbc

Spring-boot-starter-jdbc 加入后,我们便可以使用Spring-jdbc组件中的JdbcTemplate来对数据库进行操作。先准备一个数据库表,这里使用MySql数据库。

这里我们使用Druid连接池

  • pom.xml文件中加入依赖


	
	
		mysql
		mysql-connector-java
	
	
	
		org.mybatis.spring.boot
		mybatis-spring-boot-starter
		1.3.1
	
	
	
		com.alibaba
		druid
		1.1.3
	
	
	
		org.springframework.boot
		spring-boot-starter-test
		test
	

Spring与MyBatis整合后,我们可以在业务代码中直接注入各种mapper来完成工作,mapper对象被Spring容器管理,Mapper工作的时候需要为其注入 SqlSessionFactory,而SqlSessionFactory又需要为其注入DataSource,所以mybatis-spring-boot-autoconfigure 完成的工作就是将这些类的对象放置到Spring IOC容器中。

  • 配置

Springboot应用中,配置都是在application.yml或者application.properties中。

在src/main/resource/application.yml文件中的配置:

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/eshop?characterEncoding=utf8
    username: root
    password: 123456

mybatis:
  type-aliases-package: cn.itlaobing.springboot.entity
  mapperLocations: classpath:mapper/*.xml
  configuration:
    map-underscore-to-camel-case: true
    default-fetch-size: 100
    default-statement-timeout: 30

springboot会自动加载spring.datasource.*相关配置,数据源就会自动注入到sqlSessionFactory中,sqlSessionFactory会自动注入到Mapper中.

  • 实体类与映射器接口以及映射文件

文件组织结构如下:

  • 映射器扫描

我们在配置文件中配置了映射文件所在的目录,但是映射器接口对于Springboot来说依然是未知,必须让springboot能够扫描到映射器接口,只有这样,我们才能在业务类中注入映射器对象完成所要做的数据操作。为此,mybatis-spring包提供了@MapperScan,通过它指定映射器接口所在的包,这样哪些映射器接口就能够被spring IOC容器托管了。我们将这个annotation与@SpringBootApplication放在一起即可.

例如:

package cn.zl.java;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan("cn.zl.java.mapper")
public class EshopApplication {
    public static void main(String[] args) {
        SpringApplication.run(EshopApplication.class, args);
    }
}

最后测试一下就好了!



你可能感兴趣的:(Spring Boot 框架学习(二)----数据访问(MyBatis))