spring-boot 注解配置mybatis+druid(新手上路)

spring-boot 注解配置mybatis+druid(新手上路)

惊讶惊讶惊讶

之前已经介绍了新手如何搭建一个简单的springboot,接下来介绍一下springboot+mybatis+druid的配置方法。

鄙人不才,参考了一些高手的博文以及官方文档,整理出了一点心得。

对高手的感谢无以言表,原文地址:http://blog.csdn.net/lxhjh/article/details/51764604

http://blog.csdn.net/xiaoyu411502/article/details/51392237

使用环境:JDK1.8 、eclipse-neon、maven3.5+、mysql5.5

框架使用:springboot1.4.1、druid1.0.26、mybatis自动获取版本号

介绍:我使用的配置文件格式为application.properties,基本都是使用注解的方式搭建。

数据库表结构,databases名为mydatabases;表明为city,字段有三个,分别是id、name、province,数据类型是varchar(20)。

第一步:

开始还是新建springboot项目,然后导包。

新建maven项目,选择jar包。

配置pom.xml文件。

  <properties>
  	<java.version>1.8</java.version>
  </properties>
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.4.1.RELEASE</version>
  </parent>
  <dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- druid数据库连接池 -->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>1.0.26</version>
	</dependency>
	<!-- springboot的mybatis -->
	<dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>1.1.1</version>
    </dependency>
    <!-- MySql数据库驱动 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
    <!-- Springboot 热部署 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional>
    </dependency>
    </dependencies>

第二步:

创建启动类。

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;

@SpringBootApplication
@ServletComponentScan	//扫描Servlet
@MapperScan("mapper")	//这里mapper是你的mybatis的mapper目录。
public class Application {
	public static void main(String[] args) {
		SpringApplication.run(Application.class, args);
	}
}

第三步:

填写配置文件。(这里呀,参数比较多,可以选择填写。)

我使用的是application.properties文件,该文件放在src/main/resources目录下,springboot框架启动后会自动读取它。

#数据库设置
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/mydatabases
spring.datasource.username=root
spring.datasource.password=123
#--------------------------
# 下面为连接池的补充设置,应用到上面所有数据源中
# 初始化大小,最小,最大
spring.datasource.initialSize=5
spring.datasource.minIdle=5
spring.datasource.maxActive=20
# 配置获取连接等待超时的时间
spring.datasource.maxWait=60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 
spring.datasource.timeBetweenEvictionRunsMillis=60000
# 配置一个连接在池中最小生存的时间,单位是毫秒 
spring.datasource.minEvictableIdleTimeMillis=300000
spring.datasource.validationQuery=SELECT 1 FROM DUAL
spring.datasource.testWhileIdle=true
spring.datasource.testOnBorrow=false
spring.datasource.testOnReturn=false
# 打开PSCache,并且指定每个连接上PSCache的大小 
spring.datasource.poolPreparedStatements=true
spring.datasource.maxPoolPreparedStatementPerConnectionSize=20
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙 
spring.datasource.filters=stat,wall,log4j
# 通过connectProperties属性来打开mergeSql功能;慢SQL记录
spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
# 合并多个DruidDataSource的监控数据
#spring.datasource.useGlobalDataSourceStat=true

第四步:

配置数据源。这里相关的参数会自动赋值到datasource里。

import javax.sql.DataSource;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import com.alibaba.druid.pool.DruidDataSource;
@Configuration
public class DruidDataSourceConfiguration {

	@Bean
	@ConfigurationProperties(prefix = "spring.datasource")
	public DataSource druidDataSource() {
		DruidDataSource druidDataSource = new DruidDataSource();
		return druidDataSource;
	}
}

第五步:

写一个实体类。这里可以随意哈。

import java.io.Serializable;

public class City implements Serializable{
	private static final long serialVersionUID = 1L;
	private String id;
	private String name;
	private String province;
	City(){
		
	}
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getProvince() {
		return province;
	}
	public void setProvince(String province) {
		this.province = province;
	}
	@Override
	public String toString() {
		return "City [id=" + id + ", name=" + name + ", province=" + province + "]";
	}
	
}

第六步:

写mapper文件。这里的包地址为Application的MapperScan的值。

import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

public interface CityMapper {
	
	@Select("select * from city where id = #{id}")
	City findCityById(@Param("id") String id);
}

第七步:

这里就不写Service了,直接在Controller里写了。

import javax.annotation.Resource;

import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/demo")
@EnableAutoConfiguration
public class HelloController {
	@Resource
	private CityMapper cityMapper;
	@RequestMapping("/test")
	String test1(){
		return "hello,test1()";
	}
	@RequestMapping("/findCity2")
	City findCity2(@RequestParam String id){
		return cityMapper.findCityById(id);
	}
}

第八步:

这里要写filter,配合druid监控的使用。

import javax.servlet.annotation.WebFilter;
import javax.servlet.annotation.WebInitParam;

import com.alibaba.druid.support.http.WebStatFilter;

@WebFilter(filterName="druidWebStatFilter",urlPatterns="/*",
initParams={
         @WebInitParam(name="exclusions",value="*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*")// 忽略资源
 }
)
public class DruidStatFilter extends WebStatFilter{

}


第九步:

配置监控界面。

import com.alibaba.druid.support.http.StatViewServlet;
import javax.servlet.annotation.WebServlet;
import javax.servlet.annotation.WebInitParam;
@WebServlet(urlPatterns = "/druid/*", 
    initParams={
            @WebInitParam(name="allow",value="192.168.16.110,127.0.0.1"),// IP白名单 (没有配置或者为空,则允许所有访问)
            @WebInitParam(name="deny",value="192.168.16.111"),// IP黑名单 (存在共同时,deny优先于allow)
            @WebInitParam(name="loginUsername",value="admin"),// 用户名
            @WebInitParam(name="loginPassword",value="123"),// 密码
            @WebInitParam(name="resetEnable",value="false")// 禁用HTML页面上的“Reset All”功能
    })
public class DruidStatViewServlet extends StatViewServlet {
	private static final long serialVersionUID = 1L;
	
}

第十步:

启动测试。在application.java中启动,浏览器中先进入:localhost:8080/druid/login.html,输入用户名:admin,密码:123,进入。

再执行一下localhost:8080/demo/findCity2?id=001,(你的数据)查看结果。这里需要你的数据库里有数据。

在监控页面看看sql监控是否被监控到。

附上源码:点击打开链接


肚子饿。。。

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值