栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java > SpringBoot

SpringBoot+Mybatis集成搭建

SpringBoot 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringBoot+Mybatis集成搭建

本博客介绍一下SpringBoot集成Mybatis,数据库连接池使用alibaba的druid,使用SpringBoot微框架虽然集成Mybatis之后可以不使用xml的方式来写sql,但是用惯了xml的其实也可以用xml来实现的,实现上具体用什么方式并不重要,主要是搭建一遍,对框架的运转就比较清晰。本博客还是用xml的方式来实现Mybatis的sql编写,不用注解方式。

maven配置

 
    
      org.mybatis.spring.boot
      mybatis-spring-boot-starter
      1.3.1
    

当然要引入druid,mysql等等jar的话可以参考我一个项目里的parent工程的maven配置:


  4.0.0
  com.muses.taoshop
  taoshop
  1.0-SNAPSHOT
  pom
  taoshop

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

  
    UTF-8

    
    1.0

    
    1.2.17
    5.1.27
    3.4.0
    1.3.0
    1.3.1
    5.1.39
    1.5.7.RELEASE
    1.1.2
    4.2.1
    1.2.7
    1.16.10
  

  
    taoshop-quartz
    taoshop-search
    taoshop-common
    taoshop-provider-api
    taoshop-provider
    taoshop-manager
    taoshop-portal
    taoshop-cms
    taoshop-order
      taoshop-sso
  

  
    
      
        src/main/java
        
          **@Controller@EnableScheduling//开启对计划任务的支持@EnableTransactionManagement//开启对事务管理配置的支持@EnableCaching@EnableAsync//开启对异步方法的支持@EnableAutoConfiguration@ServletComponentScan@SpringBootApplication(exclude={DataSourceAutoConfiguration.class,
        MybatisAutoConfiguration.class,
        DataSourceTransactionManagerAutoConfiguration.class})public class PortalApplication {    @RequestMapping("/")    @ResponseBody
    String home() {        return "portal web!";
    }    @RequestMapping("/doTest")    @ResponseBody
    String doTest(){
        System.out.println(Thread.currentThread().getName());
        String threadName = Thread.currentThread().getName();        return threadName;
    }    public static void main(String[] args) throws Exception {
        SpringApplication.run(PortalApplication.class, args);
    }


}

@SpringBootApplication(exclude={DataSourceAutoConfiguration.class,
MybatisAutoConfiguration.class,
DataSourceTransactionManagerAutoConfiguration.class}),这个注释是必须的,开启自动扫描数据源和Mybatis配置文件

数据库配置
做好SpringBoot启动类的注解之后,需要编写Mybatis和数据源的配置类

写一个Constants类:

package com.muses.taoshop.common.core.database.config;public class baseConfig {    
    public static final String DATA_SOURCE_NAME = "shop";    
    public static final String DATA_SOURCE_PROPERTIES = "spring.datasource.shop";    
    public static final String REPOSITORY_PACKAGES = "com.muses.taoshop.**.repository";    
    public static final String MAPPER_PACKAGES = "com.muses.taoshop.**.mapper";    
    public static final String ENTITY_PACKAGES = "com.muses.taoshop.*.entity";    
    public static final String TYPE_HANDLERS_PACKAGES = "com.muses.taoshop.common.core.database.typehandlers";    
    public static final String SQL_SESSION_FACTORY = "sqlSessionFactory";    
    public static final String MYBATIS_TRANSACTION_MANAGER = "mybatisTransactionManager";    
    public static final String JEDIS_POOL = "jedisPool";    
    public static final String JEDIS_POOL_CONFIG = "jedisPoolConfig";

}

DataSource配置类:

package com.muses.taoshop.common.core.database.config;import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import javax.sql.DataSource;import static com.muses.taoshop.common.core.database.config.baseConfig.DATA_SOURCE_NAME;import static com.muses.taoshop.common.core.database.config.baseConfig.DATA_SOURCE_PROPERTIES;@Configurationpublic class DataSourceConfig {

    @Bean(name = DATA_SOURCE_NAME)
    @ConfigurationProperties(prefix = DATA_SOURCE_PROPERTIES)
    public DataSource dataSource() {        return DruidDataSourceBuilder.create().build();
    }
}

Mybatis配置类:

package com.muses.taoshop.common.core.database.config;//import com.muses.taoshop.common.core.database.annotation.MybatisRepository;import com.muses.taoshop.common.core.database.annotation.TypeAliasesPackageScanner;import org.apache.ibatis.io.VFS;import org.apache.ibatis.plugin.Interceptor;import org.apache.ibatis.session.SqlSessionFactory;import org.mybatis.spring.SqlSessionFactoryBean;import org.mybatis.spring.annotation.MapperScan;import org.mybatis.spring.boot.autoconfigure.SpringBootVFS;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.context.annotation.*;import org.springframework.core.io.support.PathMatchingResourcePatternResolver;import org.springframework.core.io.support.ResourcePatternResolver;import org.springframework.jdbc.datasource.DataSourceTransactionManager;import org.springframework.transaction.annotation.EnableTransactionManagement;import javax.sql.DataSource;import static com.muses.taoshop.common.core.database.config.baseConfig.*;@MapperScan(
        basePackages = MAPPER_PACKAGES,        //annotationClass = MybatisRepository.class,
        sqlSessionFactoryRef = SQL_SESSION_FACTORY
)@ComponentScan@EnableTransactionManagement@Configurationpublic class MybatisConfig {    //@Autowired
   //MybatisSqlInterceptor mybatisSqlInterceptor;

    TypeAliasesPackageScanner packageScanner = new TypeAliasesPackageScanner();    @Bean(name = DATA_SOURCE_NAME)    @ConfigurationProperties(prefix = DATA_SOURCE_PROPERTIES)    @Primary
    public DataSource dataSource(){        return DataSourceBuilder.create().build();
    }    @Primary
    @Bean(name = SQL_SESSION_FACTORY)    public SqlSessionFactory sqlSessionFactory(@Qualifier(DATA_SOURCE_NAME)DataSource dataSource)throws Exception{        //SpringBoot默认使用DefaultVFS进行扫描,但是没有扫描到jar里的实体类
        VFS.addImplClass(SpringBootVFS.class);
        SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();        //factoryBean.setPlugins(new Interceptor[]{mybatisSqlInterceptor});
        factoryBean.setDataSource(dataSource);        //factoryBean.setConfigLocation(new ClassPathResource("mybatis-config.xml"));
        ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();        try{
            factoryBean.setMapperLocations(resolver.getResources("classpath*:/mybatis@Servicepublic class ItemServiceImpl implements IItemService {    @Autowired
    ItemMapper itemMapper;    
    @Override
    public ItemDetail getItemDetailInfo(int spuId){
        ItemDetail itemDetail = itemMapper.getItemDetail(spuId);        return  itemDetail;
    }


}



作者:smileNicky
链接:https://www.jianshu.com/p/e302b99fc5b4


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/235365.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号