java SpringBoot(十二)数据库访问Ddemo 使用Druid跟MyBatis简单实例

22 篇文章 1 订阅
11 篇文章 0 订阅

今天我们简单使用Druid作为数据库操作的数据源 Druid可以提供对数据库访问、慢sql、防火墙、sql注入等很多监控功能

使用MyBatis数据库操作工具对数据库进行简单操作。

前提:

我们都知道用SpringBoot操作数据库需要导入JDBC包

JDBC包帮我们底层配置好的连接池是:HikariDataSource

我们想将数据源切换成Druid,导入Druid包查看源码

 

在 DataSourceAutoConfiguration之前加载,所以数据源就切换成我们的 Druid

 

Demo:

1、首先pom修改,导入jdbc、mysql驱动、druid以及MyBatis

		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid-spring-boot-starter</artifactId>
			<version>1.1.17</version>
		</dependency>
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>2.1.4</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-jdbc</artifactId>
		</dependency>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<!--            <version>5.1.49</version>-->

2、修改配置文件

server:
  port: 8081 #spring 启动端口
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/test #mysql 地址
    username: root
    password: 123456
    driver-class-name: com.mysql.jdbc.Driver #指定驱动

    druid:
      filters: stat,wall,slf4j #指定开启的功能

      stat-view-servlet: #监控页面配置
        enabled: true #开启
        login-username: admin #账号 密码
        login-password: admin
        reset-enable: false
      web-stat-filter: #web 过滤器
        enabled: true #开启
        url-pattern: /* #监控的页面
        exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*' #解除监控的页面
      filter:
        stat:
          slow-sql-millis: 1000 #慢sql阈值 ms
          log-slow-sql: true #日志记录慢sql
          enabled: true #开启
        wall:
          enabled: true #开启防火墙
          config:
            drop-table-allow: false #禁止删除表的操作

mybatis:
  mapper-locations: classpath:mapper/*xml #mapper扫描路径
  type-aliases-package: com.example.demo.bean #类型所在目录
  configuration:
    map-underscore-to-camel-case: true #开启驼峰字段转换

3、开启数据库 查看数据表

4、根据数据库数据内容创建bean包装类

这里利用了 lombok 的@Data 实现自动实现了构造函数、get set以及toString

package com.example.demo.bean;

import lombok.Data;

@Data
public class Student {
    private Long id;
    private Integer score;
    private String name;
}

5、编写mapper

package com.example.demo.mapper;

import com.example.demo.bean.Student;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface StudentMapper {

    public Student getStudent(Long id);
}

6、创建该mapper的xml配置文件(这里要放在我们配置的目录下边,这样才能扫描到)

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.demo.mapper.StudentMapper">

    <!--    public Account getAcct(Long id); -->
    <select id="getStudent" resultType="com.example.demo.bean.Student">
        select * from  student where  id=#{id}
    </select>

    <!--    -->

</mapper>

1、是命名空间 直接复制引用即可

2、指定mapper里边的方法

3、输出的类型

4、sql语句

7、编写service层

取出我们注入的mapper 利用mapper实现sql查询

package com.example.demo.service;

import com.example.demo.bean.Student;
import com.example.demo.mapper.StudentMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class StudentService {

    @Autowired
    StudentMapper studentMapper;

    public Student getStudentById(Long id){return studentMapper.getStudent(id);}
}

8、最后编写controller

package com.example.demo.controller;

import com.example.demo.service.StudentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class SqlConTestController {

    @Autowired
    JdbcTemplate jdbcTemplate;

    @Autowired
    StudentService studentService;

    @ResponseBody
    @GetMapping("/query")
    public String query(){
        Long count = jdbcTemplate.queryForObject("select count(*) from student", Long.class);
        return count.toString();
    }

    @ResponseBody
    @GetMapping("/query2")
    public String query2(@RequestParam("id") Long id){
        return studentService.getStudentById(id).toString();
    }
}

9、启动程序 访问本地8081 实现查询

10、查看Druid的监控数据

访问 http://localhost:8081/druid/index.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值