关于SpringBoot整合数据库

12 篇文章 1 订阅
12 篇文章 0 订阅

Hikari+jdbcTemplate+mysql

pom.xml

<!--        连接池,jdbc,事务相关-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jdbc</artifactId>
        </dependency>
<!--        mysql驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.49</version>
        </dependency>

yaml

spring:
#  连接源配置
  datasource:
    url: jdbc:mysql://localhost:3306/test
    username: root
    password: 333
    driver-class-name: com.mysql.jdbc.Driver
#    template配置
  jdbc:
    template:
      query-timeout: 3

Druid+jdbcTemplate+mysql

自定义

pom.xml

<!--        连接池,jdbc,事务相关-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jdbc</artifactId>
        </dependency>
<!--        mysql驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.49</version>
        </dependency>
        <!--        druid数据源-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.17</version>
        </dependency>

yaml

spring:
#  连接源配置
  datasource:
    url: jdbc:mysql://localhost:3306/test
    username: root
    password: 333
    driver-class-name: com.mysql.jdbc.Driver
#    template配置
  jdbc:
    template:
      query-timeout: 3

configuration

@Configuration
public class DataSourceConfiguration {
    /**
     * 添加druid数据源到容器中
     * @return
     */
    @Bean
    @ConfigurationProperties(value = "spring.datasource")
    public DataSource dataSource(){
        return new DruidDataSource();
    }

    /**
     * 配置监控页面的Servlet
     * @return
     */
     @Bean
    public ServletRegistrationBean statViewServlet(){
        StatViewServlet statViewServlet = new StatViewServlet();
        return new ServletRegistrationBean<StatViewServlet>(statViewServlet,"/druid/*");
    }
}

tips:
在SpringBoot中想要添加Servlet很简单,写一个配置类,添加ServletRegistrationBean组件即可,该组件创建需要两个参数:Servlet对象及其要映射的路径,添加Filter也是一样的只不过映射路径要用setter方法配置

官方

pom.xml

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.17</version>
        </dependency>

yaml

spring:
#  连接源配置
  datasource:
    url: jdbc:mysql://localhost:3306/test
    username: root
    password: 333
    driver-class-name: com.mysql.jdbc.Driver

    druid:
      aop-patterns: com.atguigu.admin.*  #监控SpringBean
      filters: stat,wall     # 底层开启功能,stat(sql监控),wall(防火墙)

      stat-view-servlet:   # 配置监控页功能
        enabled: true
        login-username: admin
        login-password: admin
        resetEnable: false

      web-stat-filter:  # 监控web
        enabled: true
        urlPattern: /*
        exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*'


      filter:
        stat:    # 对上面filters里面的stat的详细配置
          slow-sql-millis: 1000
          logSlowSql: true
          enabled: true
        wall:
          enabled: true
          config:
            drop-table-allow: false
#    template配置
  jdbc:
    template:
      query-timeout: 3

Druid+Mybatis+mysql

pom.xml

初始化向导中
在这里插入图片描述

<!--        连接池,jdbc,事务相关-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jdbc</artifactId>
        </dependency>
<!--        mysql驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.49</version>
        </dependency>
<!--        druid-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.17</version>
        </dependency>
<!--        mybatis-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.4</version>
        </dependency>

yaml

spring:
#  连接源配置
  datasource:
    url: jdbc:mysql://localhost:3306/test
    username: root
    password: 333
    driver-class-name: com.mysql.jdbc.Driver

    druid:
      aop-patterns: com.atguigu.admin.*  #监控SpringBean
      filters: stat,wall     # 底层开启功能,stat(sql监控),wall(防火墙)

      stat-view-servlet:   # 配置监控页功能
        enabled: true
        login-username: admin
        login-password: admin
        resetEnable: false

      web-stat-filter:  # 监控web
        enabled: true
        urlPattern: /*
        exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*'


      filter:
        stat:    # 对上面filters里面的stat的详细配置
          slow-sql-millis: 1000
          logSlowSql: true
          enabled: true
        wall: #防火墙
          enabled: true
          config:
            drop-table-allow: false
mybatis:
  mapper-locations: classpath:mybatis/mapper/*.xml  #sql映射文件位置,只有通过配置写sql才用这样
  configuration: #以后我们在这里配置mybatis中configuration要配置的东西
    map-underscore-to-camel-case: true

mapper.xml(sql配置文件,和mybatis中相同)

<?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.bianys.demo.mapper.ClientMapper">
    <select id="getAll" resultType="com.bianys.demo.domain.Client">
        select * from  client
    </select>
</mapper>

mapper

mapper类需要添加@Mapper注解,也可以在主配置类中添加MapperScan(“包路径”)指定包路径下的类都是mapper

package com.bianys.demo.mapper;

import com.bianys.demo.domain.Client;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Component;

import java.util.List;

@Mapper//这是mapper注解
public interface ClientMapper {
    public List<Client> getAll();
}

注解方式

pom.xml与之前相同 yaml可以不写 mapper.xml更不用写 mapper和mybatis中的一样

package com.bianys.demo.mapper;


        import com.bianys.demo.domain.Client;
        import org.apache.ibatis.annotations.Insert;
        import org.apache.ibatis.annotations.Mapper;
        import org.apache.ibatis.annotations.Options;
        import org.apache.ibatis.annotations.Select;
        import org.springframework.stereotype.Component;

        import java.util.List;

@Mapper
public interface ClientMapper {

    public List<Client> getAll();

    @Select(value = "select id from client")
    public List<Integer> getAllId();

    @Insert("insert into client(`range`) values(#{range})")
    @Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id")
    public void insertClient(Client client);
}

总结

  • 引入mybatis-starter
  • 配置application.yaml中,指定mapper-location位置即可
  • 编写Mapper接口并标注@Mapper注解
  • 简单方法直接注解方式
  • 复杂方法编写mapper.xml进行绑定映射
  • @MapperScan(“com.atguigu.admin.mapper”) 简化,其他的接口就可以不用标注@Mapper注解

Druid+MybatisPlus+mysql

详细信息请参照官方文档

pom.xml

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
<!--        druid-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.17</version>
        </dependency>
<!--        mybatis-plus-->        
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.3.1</version>
        </dependency>

yaml

同mybatis

mapper、service、serviceImpl

配置好这三个类,xxxxServiceImpl类就具有了大量的对数据库进行操作的方法,当然我们也可以按照mybatis来使用,使用mybatis-plus依然可以随心所欲的使用mybatis

  • mapper
package com.bianys.demo.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.bianys.demo.bean.User;
//不用配置@Mapper注解
public interface UserMapper extends BaseMapper<User> {
}
  • service
public interface UserService extends IService<User> {
}
  • serviceImpl
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper,User> implements UserService {

自动配置

  • MybatisPlusAutoConfiguration 配置类,MybatisPlusProperties 配置项绑定。mybatis-plus:xxx 就是对mybatis-plus的定制
  • SqlSessionFactory 自动配置好。底层是容器中默认的数据源
  • mapperLocations 自动配置好的。有默认值。classpath*:/mapper/**/*.xml;任意包的类路径下的所有mapper文件夹下任意路径下的所有xml都是sql映射文件。 建议以后sql映射文件,放在 mapper下
  • 容器中也自动配置好了 SqlSessionTemplate
  • @Mapper 标注的接口也会被自动扫描;建议直接 @MapperScan(“com.atguigu.admin.mapper”) 批量扫描就行

@TableName、TableFiled、@TableId等注解

  • @TableName:放在domain类上,指定该类在数据库所对应的表的名称
@TableName("t_user")
public class User {
  • @TableFiled:放在属性上,当他的select值为false时,该属性将不会参与数据库的操作
    @TableField(select = false)
    private String username;
  • @TableId() : 放在属性上,他的value值为表中主键的字段名
@TableId("id")
    private Integer id;

配置分页

添加配置类即可生效page

    // 最新版
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor(DbType.H2);
        //设置当前页面超出是否回滚
        paginationInnerInterceptor.setOverflow(true);
        //设置请求最大页数
        paginationInnerInterceptor.setMaxLimit(500L);
        interceptor.addInnerInterceptor(paginationInnerInterceptor);
        return interceptor;
    }

redis+Lettuce

pom.xml

<!--        redis-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

yaml

  redis:
  # 数据库地址
    #    host: r-bp1bdn6tbx3521mnw2pd.redis.rds.aliyuncs.com
  # 数据库密码
    #    password: 1z2x3c4v5b-
    url: redis://:bianys:1z2x3c4v5b-@r-bp1bdn6tbx3521mnw2pd.redis.rds.aliyuncs.com:6379

use

通过Spring导入StringRedisTemplate类,即可通过StringRedisTemplate对象操作redis数据库

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.core.ValueOperations;

@SpringBootTest
class DemoApplicationTests {

    @Autowired
    StringRedisTemplate redisTemplate;

    @Test
    void contextLoads() {
        ValueOperations<String, String> operations = redisTemplate.opsForValue();
        operations.set("hello", "helloWorld");
        String hello = operations.get("hello");
        System.out.println(hello);
    }
}

redis+jedis

pom.xml

<!--        redis-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <!--        jedis-->
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>${jedis.version}</version>
        </dependency>

yaml

  redis:
  # 数据库地址
    #    host: r-bp1bdn6tbx3521mnw2pd.redis.rds.aliyuncs.com
  # 数据库密码
    #    password: 1z2x3c4v5b-
    url: redis://:bianys:1z2x3c4v5b-@r-bp1bdn6tbx3521mnw2pd.redis.rds.aliyuncs.com:6379
    clientType: jedis
    jedis:
      pool:
        max-active: 10

use

同Lettuce,Lettuce是默认的操作redis数据库的包

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

狴犴ys

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值