SpringBoot+MyBatis快速搭建后台服务

本文详细介绍了如何从零开始搭建SpringBoot项目,包括项目创建、依赖添加及配置,同时深入讲解了如何整合MyBatis进行数据库操作,涵盖数据源配置、SessionFactory设置及事务管理。

一:进入官网创建一个springboot的项目

 

然后会生成一个jar包,将这个包导入到项目中

新增一些依赖

        <parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.1.2.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.daojihe</groupId>
	<artifactId>daojihe-starter</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>daojihe-starter</name>
	<description>Demo project for Spring Boot</description>

	<properties>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
		</dependency>
		
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>

就可以启动了

SpringBoot返回json数据

@RestController
@RequestMapping("/book")
public class BookController {
    //todo 
}

@RestController 等价于@Controller  和  @ResponseBody ,会将返回的数据转换成json数据

SpringBoot 热部署

        <!-- 热部署 -->
		<!-- devtools可以实现页面热部署(即页面修改后立即生效,这个确实可以在        
        application.properties文件中配置,配置spring.thymeleaf.cache=false来实现
		实现类文件热部署(类文件修改后不会立即生效)实现对属性文件的热部署
		即devtools会监听classpath下的文件变动,并且会立即重启应用(发生在保存时机)
		(1)base classloader(base类加载器):加载不改变class,例如第三方提供的jar包
		(2)restart classloader (restarter类加载器):加载正在开发的class
		为什么重启快,因为重启的时候只是加载了在开发的Class,没有重新加载第三方的jar包 -->
		<!-- <dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<optional>true</optional>
		</dependency> -->

为热部署配置application.properties

#热部署生效
spring.devtools.restart.enabled=true
#设置重启的目录,为添加那个目录的文件需要restart
spring.devtools.restart.additional-paths=src/main/java

SpringBoot资源属性配置

             <!-- 资源文件读取依赖包 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-configuration-processor</artifactId>
			<optional>true</optional>
		</dependency>

 

Server服务端相关配置

###################################################
#
# Server 服务端相关配置
#
##################################################
# 配置API端口号
server.port=8081
# 配置context-path ,一般来说这个配置在正式发布的时候不配置
server.servlet.context-path=/Daojihe
#错误页,指定发生错误时,页面跳转URL--> BasicErrorController
#server.error.path=/error
# session最大超时事件(分钟)默认为30分钟
server.session-timeout=60
#该服务绑定IP地址,自动服务器时如不是该IP地址则抛出异常失败
#只有特殊需求的情况下才配置,具体根据各自的业务来设置
# server.address=192.168.1.1

Tomcat相关配置

###################################################
#
# Tomcat 相关常用配置
#
##################################################
# tomcat最大线程数,默认为200
# server.tomcat.max-threads=250
# tomcat的URI编码
server.tomcat.uri-encoding=UTF-8
# 存放Tomcat的日志,Dump等文件的临时文件夹,默认系统的tmp文件夹
#server.tomcat.basedir=D:/springboot-tomcat-tmp
# 打开TomcatAccess日志,并可以设置日志格式的方法: 
#server.tomcat.access-log-enabled=true
# server.tomcat.access-log-pattern=
#accesslog目录 默认在basedir/logs
#server.tomcat.accesslog.directory=
#日志文件目录
#logging.path=D:/springboot-tomcat-tmp
#日志文件名称,默认为spring.log
#logging.file=myapp.log

 

整合mybatis:

导入mybatis依赖以及数据源

            <!-- 数据源 -->
		<dependency>
			<groupId>com.mchange</groupId>
			<artifactId>c3p0</artifactId>
			<version>0.9.5.2</version>
		</dependency>
		
		<!-- 数据库连接器 -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.41</version>
		</dependency>
		
		<!--mybatis-->
		<dependency>
		    <groupId>org.mybatis.spring.boot</groupId>
		    <artifactId>mybatis-spring-boot-starter</artifactId>
		    <version>1.3.1</version>
		</dependency>
		<!--mapper-->
		<dependency>
		    <groupId>tk.mybatis</groupId>
		    <artifactId>mapper-spring-boot-starter</artifactId>
		    <version>1.2.4</version>
		</dependency>

数据库相关属性配置

###################################################
#
# 配置数据源相关  
#
##################################################
jdbc.url=jdbc:mysql://localhost:3306/daojihe?useUnicode=true&characterEncoding=utf-8
jdbc.username=root
jdbc.password=root
jdbc.driver=com.mysql.jdbc.Driver

mybatis配置

###################################################
#
# mybatis 配置
#
##################################################
# mybatis 配置
mybatis.config.file=mybatis-config.xml
mapper.path=/mapper/**.xml
pojo.package=com.daojihe.pojo

在src.main.resources中加入新建mybatis.config.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
	<!-- 配置全局属性 -->
	<settings>
		<!-- 使用JDBC的getGeneratedKeys获得数据库自增主键值 -->
		<setting name="useGeneratedKeys" value="true"/>
		<!-- 使用列表签替换列别名  默认:true -->
		<setting name="useColumnLabel" value="true"/>
		<!-- 开启驼峰命名转换:Table{create_time}-> Pojo(createTime) -->
		<setting name="mapUnderscoreToCamelCase" value="true"/>
	</settings>
</configuration>

包结构:

 

配置数据源

package com.daojihe.config.dao;

import java.beans.PropertyVetoException;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import com.mchange.v2.c3p0.ComboPooledDataSource;

/**
 * 尽量减少xml配置
 * @author 叶孤城
 *配置数据源
 */

@Configuration
//配置mybatis mapper 的扫描路径
@MapperScan("com.daojihe.dao")
public class DataSourceConfiguration   {
	
	@Value("${jdbc.driver}")	
	private String jdbcDriver;
	
	@Value("${jdbc.url}")
	private String jdbcUrl;
	
	@Value("${jdbc.username}")
	private String jdbcUsername;
	
	@Value("${jdbc.password}")
	private String jdbcPassword;
	
	@Bean(name="dataSource")
	public ComboPooledDataSource createDataSource() throws PropertyVetoException{
		
		ComboPooledDataSource dataSource = new ComboPooledDataSource();
		
		dataSource.setDriverClass(jdbcDriver);
		dataSource.setJdbcUrl(jdbcUrl);
		dataSource.setUser(jdbcUsername);
		dataSource.setPassword(jdbcPassword);
		dataSource.setAutoCommitOnClose(false);//
		return dataSource;
	}
}

配置sessionFactory

package com.daojihe.config.dao;

import java.io.IOException;

import javax.sql.DataSource;

import org.mybatis.spring.SqlSessionFactoryBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;

@Configuration
public class SessionFactoryConfiguration {
	@Value("${mybatis.config.file}")
	private String mybatisConfigFilePath;
	
	@Value("${mapper.path}")
	private String mapperPath;
	
	@Value("${pojo.package}")
	private String pojoPackage;
	
	@Autowired
	private DataSource dataSource;
	
	
	@Bean(name="sqlSessionFactory")
	public SqlSessionFactoryBean createSqlSessionFactoryBean() throws IOException{
		
		SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
		//加载mybatis-config.xml文件
		sqlSessionFactoryBean.setConfigLocation(new ClassPathResource(mybatisConfigFilePath));
		
		PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
		
		String packageSearchPath = PathMatchingResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX + mapperPath;
		
		System.out.println(packageSearchPath);
		sqlSessionFactoryBean.setMapperLocations(resolver.getResources(packageSearchPath));
		
		sqlSessionFactoryBean.setDataSource(dataSource);
		
		sqlSessionFactoryBean.setTypeAliasesPackage(pojoPackage);
		
		return sqlSessionFactoryBean;
	}
	
}

为service 添加事务管理

package com.daojihe.config.service;

import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.transaction.annotation.TransactionManagementConfigurer;

/**
 * 为service层添加事务管理
 * @author 叶孤城
 */
@Configuration
@EnableTransactionManagement  //开启事务管理
public class TransactionManangementConfiguration  implements TransactionManagementConfigurer{
	
	@Autowired
	private DataSource dateSource;
	
	@Override
	public PlatformTransactionManager annotationDrivenTransactionManager() {
		return new DataSourceTransactionManager(dateSource);
	}
	
}

自此配置完毕,其余的就是项目的业务代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值