今年注定是不平凡的一年,Spring家族的一套SpringBoot+SpringCloud掀起来一阵热潮,互联网微服务技术火热膨胀,身边的程序员都在学习,我经不住诱惑,准备从零开始学,并且以记录博客的形式;
1.打开Eclipse,点击File-> New Maven project->填写Group id和Artifact id->点击Finish,一个简单的项目架子创建完了;
2. pom.xml文件添加依赖
4.0.0
com.thinkingcao
springboot-mybatis-druid
0.0.1-SNAPSHOT
org.springframework.boot
spring-boot-starter-parent
2.1.0.RELEASE
UTF-8
UTF-8
1.8
org.springframework.boot
spring-boot-starter-web
org.projectlombok
lombok
true
org.mybatis.spring.boot
mybatis-spring-boot-starter
1.1.1
org.springframework.boot
spring-boot-starter-test
test
mysql
mysql-connector-java
5.1.36
org.springframework.boot
spring-boot-starter
com.alibaba
druid
1.1.10
org.springframework.boot
spring-boot-maven-plugin
3. 新建MybatisAndDruidApplication启动测试类,运行项目,测试能否正常启动
package com.thinkingcao;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
/**
*
* @author cao_wencao
* @date 2018年12月4日 下午1:59:57
*
*/
@SpringBootApplication
public class MybatisAndDruidApplication {
/**
*
* @author cao_wencao
* @param args
*
*/
public static void main(String[] args) {
SpringApplication.run(MybatisAndDruidApplication.class, args);
}
}
这个时候由于没有配置数据源,而我们依赖里面加了maven依赖,启动会报错,具体解决查看博客:Spring boot 数据源未配置,启动异常
4. 配置数据源
在src->main->resource下面新建配置文件application.yml
spring:
#profiles: dev
messages:
basename: i18n/Messages,i18n/Pages
datasource:
type: com.alibaba.druid.pool.DruidDataSource # 配置当前要使用的数据源的操作类型
driver-class-name: com.mysql.jdbc.Driver # 配置MySQL的驱动程序类
url: jdbc:mysql://localhost:3306/springboot-mybatis-druid # 数据库连接地址
username: root # 数据库用户名
password: root # 数据库连接密码
dbcp2: # 进行数据库连接池的配置
min-idle: 5 # 数据库连接池的最小维持连接数
initial-size: 5 # 初始化提供的连接数
max-total: 5 # 最大的连接数
max-wait-millis: 200 # 等待连接获取的最大超时时间
5. 设置mybatis
继续在application.yml中设置mybatis,mybatis的配置也简单,
主要是为了设置mybatis的配置文件已经mapper文件所在。
(1). 首先在resource目录下创建一个mybatis-config.xml文件,文件内容为:
(2). 在main包中的根目录下创建一个存放mapper实体的资源文件,在resource文件下创建一个文件夹mapper用来存放mapper的xml文件。
(3). 配置好资源文件路径之后,就可以在application.yml中加入mybatis的配置了,如下是一个mybatis的配置内容:
#mybatis的mapper配置文件
mybatis:
config-location: classpath:mybatis-config.xml # mybatis配置文件所在路径
mapper-locations: classpath:mapper/*.xml # 所有的mapper映射文件
type-aliases-package: com.thinkingcao.modules.mapper # 定义所有操作类的别名所在包
debug: true
logging:
level:
com.thinkingcao.modules.mapper: debug #打印mybatis的SQL
最终application.yml的内容如下图:
mybatis.type-aliases-package来指明和数据库映射的实体的所在包。
mybatis.mapper-locations来指明mapper的xml文件存放位置
(4). 此时需要有一个数据库表来做测试,我们在数据库创建一个表,并且插入一条数据:
CREATE TABLE Memeber (
`id` int(11) NOT NULL AUTO_INCREMENT ,
`name` varchar(255) NULL ,
PRIMARY KEY (`id`)
);
INSERT INTO memeber VALUES(1,"jay")
(5). 在mapper包中创建Memeber的mapper接口:
import java.util.Map;
import org.apache.ibatis.annotations.Param;
public interface MemeberMapper {
//根据id获取记录
public Map findObjectById(@Param("id")Integer id);
}
(6). 在resource中的mapper文件夹创建memberMapper.xml,并且在mapper中增加一个findObjectById的SQL查询语句。
(7). 新建TestController测试
import java.util.Map;
import javax.annotation.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.thinkingcao.modules.mapper.MemeberMapper;
@Controller
@RequestMapping("/test")
public class TestController {
@Resource
private MemeberMapper memeberMapper = null;
@RequestMapping("/one")
@ResponseBody
public Map testdb() {
return memeberMapper.findObjectById(1);
}
}
创建完之后,我们运行项目,找到启动类MybatisAndDruidApplication右键run,发现报错,提示没有扫描到mapper包,为什么呢?那是mapper需要手动在启动类中加入:
@MapperScan("com.thinkingcao.modules.mapper")
package com.thinkingcao;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
*
* @author cao_wencao
* @date 2018年12月4日 下午1:59:57
*
*/
@SpringBootApplication
@MapperScan("com.thinkingcao.modules.mapper")
public class MybatisAndDruidApplication {
/**
*
* @author cao_wencao
* @param args
*
*/
public static void main(String[] args) {
SpringApplication.run(MybatisAndDruidApplication.class, args);
}
}
再次运行,没有报错,在浏览器输入:http://localhost:8080/test/one
输出了ID为1的记录:
{
"name": "jay",
"id": 1
}
由此可见,springboot-mybatis已经搭建成功;
6. 搭建Druid监控平台
druid的使用需要做一些配置,现在我们来在根目录下创建一个包config,在config包中间创建一个叫做DruidConfig.java,并且在里写入下面的内容:
package com.thinkingcao.config;
import javax.sql.DataSource;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
/**
*
* @author cao_wencao
* @date 2018年12月4日 下午3:31:31
*
*/
@Configuration
public class DruidConfig {
@Bean
public ServletRegistrationBean druidServlet() { // 主要实现WEB监控的配置处理
ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(),
"/druid/*"); // 进行druid监控的配置处理操作
servletRegistrationBean.addInitParameter("allow", "127.0.0.1,192.168.1.159"); // 白名单
servletRegistrationBean.addInitParameter("deny", "192.168.1.200"); // 黑名单
servletRegistrationBean.addInitParameter("loginUsername", "admin"); // 用户名
servletRegistrationBean.addInitParameter("loginPassword", "111111"); // 密码
servletRegistrationBean.addInitParameter("resetEnable", "false"); // 是否可以重置数据源
return servletRegistrationBean;
}
@Bean
public FilterRegistrationBean filterRegistrationBean() {
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
filterRegistrationBean.setFilter(new WebStatFilter());
filterRegistrationBean.addUrlPatterns("/*"); // 所有请求进行监控处理
filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.css,/druid/*");
return filterRegistrationBean;
}
@Bean
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource druidDataSource() {
return new DruidDataSource();
}
}
最后贴一张项目完整目录
现在重新运行一下项目,运行成功之后,在浏览器中输入地址: http://localhost:8080/druid
这时候,druid监控平台就出现了
此时我们输入在DruidConfig中设置的loginUsername和loginPassword点击登录,一个完整的druid监控管理平台就出现了
Druid非常强大,在这里你可以查看SQL的执行情况、慢SQL、API请求情况等,根据这些可以做一些性能的调优,至于详细的用法,百度都可以了解到;
项目源码 :https://github.com/Thinkingcao/SpringBootBucket/tree/master/springboot-mybatis-druid