一、数据源配置

  1. 首先创建一个boot web工程
  2. 导入druid、mysql连接依赖
<dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.8</version>
</dependency>
  1. 配置文件
spring:
  datasource:
    #   数据源基本配置
    username: root
    password: root
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://106.12.2xx.1:3306/sso
    type: com.alibaba.druid.pool.DruidDataSource
    #   数据源其他配置
    initialSize: 5
    minIdle: 5
    maxActive: 20
    maxWait: 60000
    timeBetweenEvictionRunsMillis: 60000
    minEvictableIdleTimeMillis: 300000
    validationQuery: SELECT 1 FROM DUAL
    testWhileIdle: true
    testOnBorrow: false
    testOnReturn: false
    poolPreparedStatements: true
    #   配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
    filters: stat,wall,log4j
    maxPoolPreparedStatementPerConnectionSize: 20
    useGlobalDataSourceStat: true
    connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500

详细配置可看: https://www.cnblogs.com/funnyboy0128/p/9052447.html

  1. 数据源配置文件
package com.cjy.mq.config;

import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
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 javax.sql.DataSource;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

@Configuration
public class DruidConfig {

    //注入druid数据源
    @ConfigurationProperties(prefix = "spring.datasource")
    @Bean
    public DataSource druid(){
        return new DruidDataSource();
    }
    //2. 配置一个管理后台的servlet---druid的监控
    @Bean
    public ServletRegistrationBean servletRegistrationBean(){
        ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
        HashMap<String, String> initparam = new HashMap<>();
        initparam.put("loginUsername","admin");
        initparam.put("loginPassword","123456");
        initparam.put("allow","");//默认允许所有访问
        initparam.put("deny","127.0.0.1");
        bean.setInitParameters(initparam);
        return bean;
    }
    //3.配置一个web监控的filter
    @Bean
    public FilterRegistrationBean webStatFilter(){
        FilterRegistrationBean bean = new FilterRegistrationBean();
        bean.setFilter(new WebStatFilter());
        Map<String,String> initparam = new HashMap<>();
        initparam.put("exclusions","*.js,*.css,/druid/*");
        bean.setInitParameters(initparam);
        bean.setUrlPatterns(Arrays.asList("/*"));
        return bean;
    }
}
  1. 启动应用访问: http://localhost:8080/druid
    spingboot-整合mybatis与druid数据源

输入账号密码进入web监控页面: admin 123456
spingboot-整合mybatis与druid数据源

二、整合mybatis

  1. 导入依赖
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.1</version>
        </dependency>
  1. 创建bean与mapper接口
package com.cjy.mq.bean;

import java.io.Serializable;

public class Student implements Serializable {

    private Integer id;
    private String stuName;
    private Integer stuAge;
    private String stuEmail;
    private Double stuHeight;
    private Integer classId;

    public Student() {
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getStuName() {
        return stuName;
    }

    public void setStuName(String stuName) {
        this.stuName = stuName;
    }

    public Integer getStuAge() {
        return stuAge;
    }

    public void setStuAge(Integer stuAge) {
        this.stuAge = stuAge;
    }

    public String getStuEmail() {
        return stuEmail;
    }

    public void setStuEmail(String stuEmail) {
        this.stuEmail = stuEmail;
    }

    public Double getStuHeight() {
        return stuHeight;
    }

    public void setStuHeight(Double stuHeight) {
        this.stuHeight = stuHeight;
    }

    public Integer getClassId() {
        return classId;
    }

    public void setClassId(Integer classId) {
        this.classId = classId;
    }

    public Student(Integer id, String stuName, Integer stuAge, String stuEmail, Double stuHeight, Integer classId) {
        this.id = id;
        this.stuName = stuName;
        this.stuAge = stuAge;
        this.stuEmail = stuEmail;
        this.stuHeight = stuHeight;
        this.classId = classId;
    }

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", stuName='" + stuName + '\'' +
                ", stuAge=" + stuAge +
                ", stuEmail='" + stuEmail + '\'' +
                ", stuHeight=" + stuHeight +
                ", classId=" + classId +
                '}';
    }
}

//--------------map接口
package com.cjy.mq.mapper;


import com.cjy.mq.bean.Student;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;

public interface StudentMapper {

    public Student getStudentById(Integer id);
}

  1. 配置xml版本的
1.创建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.cjy.mq.mapper.StudentMapper">
    <!--    public Employee getEmpById(Integer id);

     public void insertEmp(Employee employee);-->
    <select id="getStudentById" resultType="com.cjy.mq.bean.Student" parameterType="java.lang.Integer">
        SELECT * FROM student WHERE id=#{id}
    </select>
</mapper>

2.mybatis.config 配置文件
<?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>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>
</configuration>

3.配置文件交给application.yml来管理
mybatis:
  # 指定全局配置文件位置
  config-location: classpath:mybatis/mybatis-config.xml
  # 指定sql映射文件位置
  #mapper-locations: classpath:mybatis/mapper/*.xml

#    schema:
#      - classpath:sql/student.sql.  执行sql文件建表
#      - classpath:sql/x x x .sql

4. 管理mapper接口
   4.1 在主程序配置注解扫描mapper接口注入容器@MapperScan(basePackages = "com.cjy.mq.mapper")

5. 测试主程序 junit测试
    @Autowired
    StudentMapper studentMapper;
    @Test
    public void test4(){
        com.cjy.mq.bean.Student studentById = studentMapper.getStudentById(1);
        System.out.println(studentById);

    }
  1. 配置注解版,主要区别在于sql的编写,以及mapper接口的注入
1. mapper注入不用在主程序扫包
@Mapper   //注入
public interface StudentMapper {
    @Select("select * from student") //sql
    public List<Student> getAll();

}

2. 测试
   @Autowired
    StudentMapper studentMapper;
    @Test
    public void test5(){
        List<com.cjy.mq.bean.Student> all = studentMapper.getAll();
        System.out.println(all.size());

    }

相关文章: