六.Spring Boot与数据访问

一.JDBC

1.创建工程

在这里插入图片描述
这里选择 SQL 下的 Mysql驱动 和 JDBC

为了演示方便,还引入 web 依赖

2.配置数据源(整合 druid 数据源)

(1).在pom文件中,引入 druid 依赖
<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.17</version>
</dependency>
(2).配置application.properties
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.url=jdbc:mysql://localhost:3306/test1?useUnicode=true&characterEncoding=UTF-8
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

数据源基本配置都在 DataSourceProperties 类中
由于各种各样的数据源有着不同的配置参数,因此DataSourceProperties中只是各个数据源的通用部分,
这里整合 druid 数据源 的独特配置参数,需要自己将配置写到 application.properties 中,然后编写配置类,进行绑定

在 application.properties 中增加额外部分

spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.url=jdbc:mysql://localhost:3306/test1
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

#   数据源其他配置
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
spring.datasource.poolPreparedStatements: true
#   配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
spring.datasource.filters: stat,wall,log4j
spring.datasource.maxPoolPreparedStatementPerConnectionSize: 20
spring.datasource.useGlobalDataSourceStat: true  
spring.datasource.connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500

编写 druid 配置类

package com.miracle.springboot.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 {

    /**
        这里手动创建数据源,不用 springBoot 通过反射创建数据源
        这里创建的数据源会把 application.properties 的属性绑定到 bean 对象中
     */
    @Bean                   // 手动绑定 spring.datasource 属性
    @ConfigurationProperties(prefix = "spring.datasource")
    public DataSource druid(){
        return new DruidDataSource();
    }

    /**
     * 配置Druid监控后台
     * 1.配置一个管理后台的servlet
     * 2.配置一个监控的fillter
     *
     * 然后访问 /druid 登录账号密码即可监控数据源
     */
    // 1.配置一个管理后台的servlet
    @Bean
    public ServletRegistrationBean statViewServlet(){
        ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
        Map<String, String> map = new HashMap<>();
        map.put("loginUsername", "admin");
        map.put("loginPassword", "123456");
        map.put("allow", "");
        bean.setInitParameters(map);
        return bean;
    }

    // 2.配置一个监控的fillter
    @Bean
    public FilterRegistrationBean webStatFilter(){
        FilterRegistrationBean bean = new FilterRegistrationBean(new WebStatFilter());
        Map<String, String> map = new HashMap<>();
        map.put("exclusions", "*.js,*.css,/druid/*");
        bean.setInitParameters(map);
        bean.setUrlPatterns(Arrays.asList("/*"));
        return bean;
    }
}

(3).数据库操作

只需要在数据库操作的java类中,注入 JdbcTemplate 即可,用法同springJDBC

@Autowired
private JdbcTemplate jdbcTemplate;

二.mybatis

1.创建工程

在这里插入图片描述
这里选择 SQL 下的 Mysql驱动 和 mybatis

springBoot会自动添加如下坐标

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

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

为了演示方便,还引入 web 依赖

2.整合 druid

同上

3.mybatis全局配置文件

在 resources 目录下,创建 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>

</configuration>

然后告诉 springBoot 全局配置文件的位置
application.properties

# 告诉 springBoot mybatis全局配置文件所在位置
mybatis.config-location=classpath:mybatis-config.xml
# 告诉 springBoot mybatis Mapper xml 文件的位置
mybatis.mapper-locations=classpath:com/miracle/springboot/mapper/*.xml

4.编写 Mapper 接口

package com.miracle.springboot.mapper;


import com.miracle.springboot.bean.Employee;
import org.apache.ibatis.annotations.Mapper;
// 添加 Mappe r注解 告诉 springBoot 这是一个 Mapper 接口
// @Mapper
public interface EmployeeMapper {

    public Employee getEmpById(Integer id);

    public int insertEmp(Employee employee);
}

注意:向 springBoot 注册 Mapper 接口有两种方式
1.在每个接口上增加 @Mapper注解,进行注册
2.在 springBoot 的启动文件 增加 @MapperScan(value = “com.miracle.springboot.mapper”)
eg:

package com.miracle.springboot;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
// 扫描指定包下的 Mapper 接口
@MapperScan(value = "com.miracle.springboot.mapper")
@SpringBootApplication
public class SpringBoot06MybatisApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringBoot06MybatisApplication.class, args);
    }
}

5.mybatis mapper配置文件

<?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.miracle.springboot.mapper.EmployeeMapper">

    <select id="getEmpById" resultType="com.miracle.springboot.bean.Employee">
        select * from employee
        where id = #{id}
    </select>

    <insert id="insertEmp">
        insert into employee(lastName,emali,gender,d_id)
        values (#{lastName},#{email},#{gender},#{dId})
    </insert>
</mapper>

然后告诉 springBoot mapper配置文件的位置
application.properties

# 告诉 springBoot mybatis全局配置文件所在位置
mybatis.config-location=classpath:mybatis-config.xml
# 告诉 springBoot mybatis Mapper xml 文件的位置
mybatis.mapper-locations=classpath:com/miracle/springboot/mapper/*.xml

三.关于事务

需要导入springBoot的jdbc,只需要在Service层的类上或者方法上加
@Transactional
注解,即可开启事务

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值