Spring Boot学习第三篇:Spring Boot整合Mybatis、和其他

Spring Boot整合Mybatis、和其他


废话不多说直接开始:

目录:



pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.zto.springboot-mybatis</groupId>
	<artifactId>zto-springboot-mybatis</artifactId>
	<version>0.0.1-SNAPSHOT</version>


	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.4.0.RELEASE</version>
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
	</properties>

	<!-- Additional lines to be added here... -->
	<dependencies>
		<!-- 对常用测试依赖的支持,包括junit,hamcrest和Mockito,海域sping-test模块 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<!-- 核心sping Boot starter,包含自动配置支持,日志和YAML -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
		</dependency>
		<!-- 对redis键值数据存储的支持,包括spring-redis -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-redis</artifactId>
		</dependency>
		<!-- 对全栈web开发的支持,包括tomcat和spring-webmbc -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<!-- springboot对缓存的支持 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-cache</artifactId>
		</dependency>
		<!-- springBoot对jdbc数据库的支持 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-jdbc</artifactId>
		</dependency>
		<!-- springBoot的默认日志系统lockback -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-logging</artifactId>
		</dependency>
		<!-- 面向切面变成的支持,包括spring-aop和Aspectj -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-aop</artifactId>
		</dependency>
		<!-- mybatis -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.3.0</version>
		</dependency>
		<!-- mybatis和spring的整合 -->
		<dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.2.0</version>
        </dependency>
        <dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid</artifactId>
			<version>1.0.5</version>
		</dependency>
		<!-- oracle -->
		<dependency>
			<groupId>com.oracle</groupId>
			<artifactId>ojdbc6</artifactId>
			<version>11.2.0.3</version>
		</dependency>
	</dependencies>


	<build>
		<plugins>
			<!-- maven逆向工程插件 -->
			<plugin>
				<groupId>org.mybatis.generator</groupId>
				<artifactId>mybatis-generator-maven-plugin</artifactId>
				<version>1.3.2</version>
				<configuration>
					<verbose>true</verbose>
					<overwrite>true</overwrite>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

application.yml

---
logging:
  level:
    root: INFO

server:
  port: 8081
  
spring:
  datasource:
    zttb:
      type: com.alibaba.druid.pool.DruidDataSource
      url: 。。。
      username: 。。。
      password:。。。
      driver-class-name: oracle.jdbc.driver.OracleDriver
      minIdle: 1
      maxActive: 2
      initialSize: 1
      timeBetweenEvictionRunsMillis: 3000
      minEvictableIdleTimeMillis: 300000
      validationQuery: SELECT 'ZTM' FROM DUAL
      testWhileIdle: true
      testOnBorrow: false
      testOnReturn: false  

DatabaseConfig.java

package com.zto.springboot.mybatis.config;

import javax.sql.DataSource;

import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.stereotype.Component;

import com.alibaba.druid.pool.DruidDataSource;

/**
 * 
 * @ClassName:  DatabaseConfig   
 * @Description: mybatis相关配置
 * @author: xyc
 * @date:   2016年11月10日 下午4:55:54   
 *
 */
@Component
@Configuration
public class DatabaseConfig {

	/**
	 * 
	 * @Title: getDataSource   
	 * @Description: 数据源的配置  
	 * @param: @return      
	 * @return: DataSource      
	 * @throws
	 */
	@Bean
	@ConfigurationProperties(prefix = "spring.datasource.zttb")
	public DataSource getDataSource() {
		return new DruidDataSource();
	}

	/**
	 * 
	 * @Title: sqlSessionFactory   
	 * @Description: mybatis的sqlSessionFactory配置
	 * @param: @param dataSource
	 * @param: @return
	 * @param: @throws Exception      
	 * @return: SqlSessionFactory      
	 * @throws
	 */
	@Bean
	public SqlSessionFactory sqlSessionFactory(DataSource dataSource)
			throws Exception {

		SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
		sqlSessionFactoryBean.setDataSource(dataSource);
		PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
		sqlSessionFactoryBean
				.setMapperLocations(resolver
						.getResources("classpath*:com/zto/springboot/mybatis/mapper/*Mapper.xml"));
		sqlSessionFactoryBean
				.setTypeAliasesPackage("com.zto.springboot.mybatis.entity");
		return sqlSessionFactoryBean.getObject();
	}

	/**
	 * 
	 * @Title: mapperScannerConfigurer   
	 * @Description: mapper接口扫描包
	 * @param: @return      
	 * @return: MapperScannerConfigurer      
	 * @throws
	 */
	@Bean
	public MapperScannerConfigurer mapperScannerConfigurer() {
		MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
		mapperScannerConfigurer
				.setBasePackage("com.zto.springboot.mybatis.mapper");
		return mapperScannerConfigurer;
	}

	/**
	 * 
	 * @Title: transactionManager   
	 * @Description: 配置事务管理器
	 * @param: @param dataSource
	 * @param: @return
	 * @param: @throws Exception      
	 * @return: DataSourceTransactionManager      
	 * @throws
	 */
	@Bean
	public DataSourceTransactionManager transactionManager(DataSource dataSource)
			throws Exception {
		return new DataSourceTransactionManager(dataSource);
	}
}

ZtoGroupStoresController.java

package com.zto.springboot.mybatis.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.zto.springboot.mybatis.entity.ZtoGroupStores;
import com.zto.springboot.mybatis.service.IZtoGroupStoresService;

@RestController
public class ZtoGroupStoresController {

	
	@Autowired
	private IZtoGroupStoresService storesService;
	
	@RequestMapping("/getStoresInfo")
	public List<ZtoGroupStores> getStoresInfo(String companyCode,String hallCode){
		List<ZtoGroupStores> groupStores = storesService.selectByCompanyCodeAndHallCode(companyCode,hallCode);
		return groupStores;
	}
}

Application.java

package com.zto.springboot.mybatis;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.ComponentScan;

@SpringBootApplication
@EnableCaching
@EnableConfigurationProperties
@EnableAutoConfiguration(exclude = { DataSourceAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class })
public class Application {

	public static void main(String[] args) {
		SpringApplication.run(Application.class, args);
		try {
			Thread.sleep(Integer.MAX_VALUE);
		} catch (Exception e) {
			System.exit(1);
		}
	}

	
}

实体、Mapper、service层就不贴了,直接调用就行...


启动服务:就可以访问到了....


项目放到码云上面:https://git.oschina.net/yuchao521/zto-springboot-mybatis


其他的整合就不说了,因为网上已经有很多了,我就把自己实现的项目放到码云上面:

springboot整合google Guava和redis实现cache:

http://git.oschina.net/yuchao521/springboot-cache

springboot整合redis

http://git.oschina.net/yuchao521/springboot-redis

springboot整合dubbo:

http://git.oschina.net/yuchao521/springboot-dubbo

springboot整合rocketmq:

http://git.oschina.net/yuchao521/springboot-demo

springboot整合调度

http://git.oschina.net/yuchao521/springboot-schedule

springboot整合tbschedule

http://git.oschina.net/yuchao521/zto-schedule


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Spring Boot使用“习惯优于配置”的理念让我们的项目快速运行起来,我们可以不用或者只需要很少的配置就能创建一个独立运行、准生产级别的基于Spring框架的项目。我们不禁要问,这么一个优秀的框架,是不是在企业开发中就已经足够了,如果是,那么为什么像BAT这些大公司还要研发自己的交易框架,当然这里面除了核心技术之外,还有两个比较重要的原因:第一:像SpringSpring Boot这些开源框架固然很优秀,但却不满足这些大公司对框架的功能要求,如spring scheduler就没有分布式调度能力,阿里研发了自己的tbschedule,以及后来的schedulerx;第二:开源框架可以解决具体的领域问题,比如持久化框架Mybatis,RPC框架Dubbo,但是面对业务流程的开发却不是它的强项,以此就诞生了SSM,以及后来的Spring MVC。放眼整个java开源世界,不管是功能问题还是业务流程开发问题都有对应框架和组件能满足我们的需求,只要我们的视野足够开阔,能有效的去整合开源组件,足以应付日常的开发。当然我们很难写出像SpringSpring BootMybatis这些优秀的框架,但是我们可以在这个基础之上,进行整合,甚至二次开发,形成公司自己的功能组件或者交易开发框架。不客气的说,开源框架的底层少不了spring的身影,那么可以肯定在Spring Boot推出以后,开源框架势必会以Spring Boot作为底层平台进行二次改造,这是趋势,也是必然。本课程顺应潮流,以Spring Boot作为基础平台,充分发挥其特性,抽象业务流程,整合开源组件,降低开发难度,打造出一个功能强大的交易开发框架,简洁,优雅,好用。本课程有如下技术特色:第一:充分使用Spring Boot的自动装配、条件注解,以及各种使用技巧;第二:使用注解@Transaction抽象业务流程,简化交易的定义和执行方式,比SpringMVC更符合业务流程的开发(当然SpringMVC很强大,无贬低之意)第三:为使交易具备RPC能力,使用泛化方式集成Dubbo,其好处是服务端不再需要提供接口给客户端使用,简单、高效;第四:使用nacos作为服务注册中心,也支持zookeeper;第五:为使交易具备Http能力,在Spring MVC的基础上提供HandlerMapping、HandlerAdapter。。。。一切尽在代码中

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值