springboot+mybatis

很久没写写东西了,去年底开始在做微服务改造,玩spring boot还有spring cloud。总结一下,免得脑子不好使,忘记事情。

springboot和spring jpa有很好的天然集成,但是如果要用mybatis的话,还是需要自己做一点点配置。刚开始弄springboot和mybatis集成的时候,一顿搜索,发现网上好多人写的都很复杂,属于纯手工集成的方式,自己配置datasource,自己配置扫描路径,自己配置transactionManager。

其实mybatis官方已经帮我们写好了MyBatis-Spring-Boot-Starter,我们只有把它声明到pom.xml即可。而且官方也有相关的demo。但是web工程集成mybatis的时候出现的问题,不知道是不是共性问题,就是必须自己用@Bean注解配置一个DataSource实例,不然springboot就是集成不了mybatis。

具体操作步骤如下:

新建一个mave工程springboot_mybatis

  1. 最后的工程如下:
springboot+mybatis_第1张图片
QQ截图.png

配置pom.xml

  1. pom.xml配置如下:


    4.0.0

    com.lee
    springboot_mybatis
    0.0.1-SNAPSHOT
    jar

    springboot_mybatis
    Spring Boot Setup Demo

    
        org.springframework.boot
        spring-boot-starter-parent
        1.4.5.RELEASE
         
    

    
        UTF-8
        1.8
        1.2.3
        3.3.0
        1.4.190
    

    
        
            org.springframework.boot
            spring-boot-starter-web
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
        

        
            org.mybatis.spring.boot
            mybatis-spring-boot-starter
            1.2.0
        

        
        
            org.springframework
            spring-jdbc
        

        
        
            com.alibaba
            druid
            1.0.27
        

        
        
            com.h2database
            h2
            ${h2.version}
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    

    
        
            spring-snapshots
            Spring Snapshots
            https://repo.spring.io/snapshot
            
                true
            
        
        
            spring-milestones
            Spring Milestones
            https://repo.spring.io/milestone
            
                false
            
        
    
    
        
            spring-snapshots
            Spring Snapshots
            https://repo.spring.io/snapshot
            
                true
            
        
        
            spring-milestones
            Spring Milestones
            https://repo.spring.io/milestone
            
                false
            
        
    


Mapper

  1. application.properties声明mybatis相关的属性
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.jdbc-url=jdbc:h2:tcp://localhost/~/springbootmybatis
spring.datasource.username=sa
spring.datasource.password=
spring.datasource.schema=classpath:import.sql

# 声明mapper所在路径
mybatis.mapper-locations=classpath:mapper/*.xml

这里用的是h2数据库,如果使用其他数据库,只要在pom添加相关的依赖和配置数据库的相关属性即可。

  1. *Mapper.xml的配置和普通的配置没有区别
  2. CityMapper.java接口
package com.mapper;

import org.apache.ibatis.annotations.Mapper;

import com.domain.City;

/**
 * Created by liyc02 on 2017/5/12.
 */
@Mapper
public interface CityMapper {
    City selectCityById(int id);
}

特别注意的是使用的@Mapper注解而不是之前的@Repository注解。

数据源配置

  1. 开始以为在application.properties中声明了spring.datasource.type=com.alibaba.druid.pool.DruidDataSource就可以自动配置了,结果不行,需要自己手动配置DataSourceConfig.java
package com.config;

import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;

import com.alibaba.druid.pool.DruidDataSource;

@Configuration
public class DataSourceConfig {
    @Autowired
    private Environment env;

    @Bean
    public DataSource getDataSource() {
        DruidDataSource ds = new DruidDataSource();
        ds.setDriverClassName(env.getProperty("spring.datasource.driver-class-name"));
        ds.setUrl(env.getProperty("spring.datasource.jdbc-url"));
        ds.setUsername(env.getProperty("spring.datasource.username"));
        ds.setPassword(env.getProperty("spring.datasource.password"));

        return ds;
    }
}

以上,运行App.java即可,访问浏览器,可以得到结果。

QQ截图.png

你可能感兴趣的:(springboot+mybatis)