IDEA创建Spring Boot项目,集成Mybatis+MySQL

前几天有同事想要用IDEA创建SpringBoot项目并集成Mybatis和MySQL,一时间没有帮他搞定,于是第二天自己琢磨了一下,记录一下以备后期使用:

1.首先创建SpringBoot环境

创建环境在之前的博客中也有描述过,这里不多介绍,如果有不会的请看我之前的文章,飞机票:https://blog.csdn.net/u013364067/article/details/83304638

最后项目目录结构如下:

为了方便起见,既然是集成MySQL和Mybatis,那么需要在pom.xml中引入除了创建工程之外的依赖包,并且在build标签中加入编译mapper.xml的配置,如下:

<?xml version="1.0" encoding="UTF-8"?>
<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>
	<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.zj</groupId>
	<artifactId>ssm</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>ssm</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-web</artifactId>
		</dependency>

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

		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>1.1.1</version>
		</dependency>

		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<scope>runtime</scope>
		</dependency>

		<!-- 连接池 -->
		<dependency>
			<groupId>com.jolbox</groupId>
			<artifactId>bonecp-spring</artifactId>
			<version>0.8.0.RELEASE</version>
		</dependency>
	</dependencies>

	<build>
		<resources>
			<resource>
				<directory>src/main/java</directory>
				<includes>
					<include>**/*.xml</include>
				</includes>
			</resource>
		</resources>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

2.SpringBoot集成MySQL和Mybatis

1>新建jdbc.properties和mybatis-config.xml,然后在包下创建config包,目录结构如下图:

首先是jdbc.properties内容,接触过MySQL配置的应该都清楚里面是啥,这里需要强调的一个内容:serverTimezone=UTC,MySQL jdbc 6.0 版本以上必须配置此参数,原因是MySQL jdbc6.0以上版本加入了时区的概念,配置如下:

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/user?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true
jdbc.username=root
jdbc.password=root

数据库对应的sql如下:

创建user数据库:

careate database user;

创建表语句:

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for `user`
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `name` varchar(500) DEFAULT NULL COMMENT '姓名',
  `sex` char(1) DEFAULT NULL COMMENT '性别  1:男 0:女',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;


INSERT INTO `user` VALUES ('1', '张三', '1', '2019-01-29 11:02:16');
INSERT INTO `user` VALUES ('2', '李四', '0', '2019-01-28 11:02:27');

然后是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>
	<!-- 定义 别名 -->
	<typeAliases>
	</typeAliases>
	<mappers>
	</mappers>
</configuration>

2>配置完MySQL和Mybatis配置文件之后,就是非常重要的集成内容了,具体步骤如下:

    1.读取数据库配置文件ApplicationDB.java,内容如下:

import com.jolbox.bonecp.BoneCPDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;

import javax.sql.DataSource;

@Configuration
@PropertySource(value = {"classpath:jdbc.properties",
        "classpath:application.properties" })
@ComponentScan(basePackages = "com.zj")
public class ApplicationDB /*extends SpringBootServletInitializer*/{
    @Value("${jdbc.url}")
    private String jdbcUrl;
    @Value("${jdbc.driverClassName}")
    private String jdbcDriverClassName;
    @Value("${jdbc.username}")
    private String jdbcUsername;
    @Value("${jdbc.password}")
    private String jdbcPassword;
    @Bean(destroyMethod = "close")
    public DataSource dataSource() {
        BoneCPDataSource boneCPDataSource = new BoneCPDataSource();
        boneCPDataSource.setDriverClass(jdbcDriverClassName);
        boneCPDataSource.setJdbcUrl(jdbcUrl);
        boneCPDataSource.setUsername(jdbcUsername);
        boneCPDataSource.setPassword(jdbcPassword);
        boneCPDataSource.setIdleConnectionTestPeriodInMinutes(60);
        boneCPDataSource.setIdleMaxAgeInMinutes(30);
        boneCPDataSource.setMaxConnectionsPerPartition(100);
        boneCPDataSource.setMinConnectionsPerPartition(5);
        return boneCPDataSource;
    }
}

   2.为了让SpringBoot项目能读取到Mybatis自动生成的mapper类,因此配置MapperScannerConfig类和MyBatisConfig类,代码如下:

MapperScannerConfig.java

import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
@AutoConfigureAfter(MyBatisConfig.class)
public class MapperScannerConfig {
    
    @Bean
    public MapperScannerConfigurer mapperScannerConfigurer() {
        MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
        mapperScannerConfigurer.setBasePackage("com.zj");
        return mapperScannerConfigurer;
    }
}
MyBatisConfig.java:
import org.mybatis.spring.SqlSessionFactoryBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;

import javax.sql.DataSource;

@Configuration
public class MyBatisConfig {

    @Autowired
    private DataSource dataSource;

    @Bean
    @ConditionalOnMissingBean//当容器里没有指定的Bean的情况下创建该对象
    public SqlSessionFactoryBean sqlSessionFactoryBean() {
        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
        // 设置数据源
        sqlSessionFactoryBean.setDataSource(dataSource);
        // 设置mybatis的主配置文件
        ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
        Resource mybatisConfigXml = resolver.getResource("classpath:mybatis-config.xml");
        sqlSessionFactoryBean.setConfigLocation(mybatisConfigXml);
        return sqlSessionFactoryBean;
    }
}

那么到这里呢,Spring Boot就已经集成了MySQL和Mybatis了,这里就不写测试类了,有需要完整项目(包括测试类)的朋友可以留言跟我要,或者土豪的话可以直接去下载

猜你喜欢

转载自blog.csdn.net/u013364067/article/details/86686187