SpringBoot笔记(6)

SpringBoot笔记(6)

一、数据访问(SQL)

1、数据源的自动配置-HikariDataSource

1、导入JDBC场景

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

数据库版本和驱动版本对应

默认版本:<mysql.version>8.0.22</mysql.version>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
<!--            <version>5.1.49</version>-->
        </dependency>
想要修改版本
1、直接依赖引入具体版本(maven的就近依赖原则)
2、重新声明版本(maven的属性的就近优先原则)
    <properties>
        <java.version>1.8</java.version>
        <mysql.version>5.1.49</mysql.version>
    </properties>

2、分析自动配置

1、自动配置的类

  • DataSourceAutoConfiguration : 数据源的自动配置

    • 修改数据源相关的配置:spring.datasource
    • 数据库连接池的配置,是自己容器中没有DataSource才自动配置的
    • 底层配置好的连接池是:HikariDataSource
  • DataSourceTransactionManagerAutoConfiguration: 事务管理器的自动配置

  • JdbcTemplateAutoConfiguration: JdbcTemplate的自动配置,可以来对数据库进行crud

    • 可以修改这个配置项@ConfigurationProperties(prefix = “spring.jdbc”) 来修改JdbcTemplate
    • @Bean@Primary JdbcTemplate;容器中有这个组件
  • JndiDataSourceAutoConfiguration: jndi的自动配置

  • XADataSourceAutoConfiguration: 分布式事务相关的

3、修改配置项

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/db_account
    username: root
    password: 123456
    driver-class-name: com.mysql.jdbc.Driver

4、测试

@Slf4j
@SpringBootTest
class Boot01WebAdminApplicationTests {

    //自动注入jdbcTemplate
    @Autowired
    JdbcTemplate jdbcTemplate;

    @Test
    void contextLoads() {
        Long aLong = jdbcTemplate.queryForObject("select count(*) from item", Long.class);
        log.info("查询数量为:{}",aLong);
    }

}

2、使用Druid数据源

1、druid官方github地址

https://github.com/alibaba/druid

整合第三方技术的两种方式

  • 自定义
  • 找starter

2、自定义方式

3、使用官方stater方式

1、引入druid-starter

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

2、分析自动配置

  • 扩展配置项 spring.datasource.druid

  • DruidSpringAopConfiguration.class, 监控SpringBean的;配置项:spring.datasource.druid.aop-patterns

  • DruidStatViewServletConfiguration.class, 监控页的配置:spring.datasource.druid.stat-view-servlet;默认开启

  • DruidWebStatFilterConfiguration.class, web监控配置;spring.datasource.druid.web-stat-filter;默认开启

  • DruidFilterConfiguration.class}) 所有Druid自己filter的配置

3、配置示例

spring:
datasource:
  url: jdbc:mysql://localhost:3306/db_account
  username: root
  password: 123456
  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

SpringBoot配置示例

https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter

配置项列表https://github.com/alibaba/druid/wiki/DruidDataSource%E9%85%8D%E7%BD%AE%E5%B1%9E%E6%80%A7%E5%88%97%E8%A1%A8

4、监控页

http://localhost:8080/druid/进入数据源的监控页

3、整合Mybatis操作

0、导入mybatis的依赖

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

1、编写Mapper接口(添加@mapper注解)

package gyb.boot01webadmin.mapper;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface ItemMapper {
    /**
     * 查询item的数量
     * @return
     */

    Long SumItemNum();
}

1、编写mabatis全局配置文件

<?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>

2、编写映射文件

<?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,和命名空间--><mapper namespace="gyb.boot01webadmin.mapper.ItemMapper">    <select id="SumItemNum" resultType="Long">        select count(*) from item    </select></mapper>

3、编写yaml中的mybatis相关配置

mybatis:  #  config-location: classpath:mybatis/mybatis-config.xml  mapper-locations: classpath:mybatis/mapper/*.xml  configuration:  #开启驼峰命名法    map-underscore-to-camel-case: true

4、测试

@AutowiredItemService itemService;@GetMapping("/db")@ResponseBodypublic String dbTest(){    Long num = itemService.SumItemNum();    return num.toString();}

5、注解模式

@Mapperpublic interface CityMapper {    @Select("select * from city where id=#{id}")    @Options(useGeneratedKeys= true, keyProperty=id)    public City getById(Long id);    public void insert(City city);}

6、tip: 获取自增主键

​ insert … .. … .

4、整合 MyBatis-Plus 完成CRUD

1、什么是MyBatis-Plus

MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

mybatis plus 官网

建议安装 MybatisX 插件

2、开发步骤

1、导入依赖

导入后不需要导入mybatis-spring的依赖

<dependency>    <groupId>com.baomidou</groupId>    <artifactId>mybatis-plus-boot-starter</artifactId>    <version>3.4.1</version></dependency>

2、配置数据库

spring:  datasource:    url: jdbc:mysql://localhost:3306/db_account    username: root    password: 123456    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

3、在在 Spring Boot 启动类中添加 @MapperScan 注解

扫描 Mapper 文件夹:

@MapperScan("gyb.mapper")

4、编写实体类、Mapper接口(继承)

@TableField(exist = false):去除表中不存在的字段

@Data//使用Mybatis时,实体类的属性都应存在于数据库public class User {    //注解表示此属性不存在数据库的字段与之对应    @TableField(exist = false)    private String username;    @TableField(exist = false)    private String password;    private Long id;    private String name;    private Integer age;    private String email;}

继承BaseMapper<>泛型为要映射的对象

public interface UserMapper extends BaseMapper<User> {}

5、测试

@Testvoid MybatisPlusTest(){    //User user = userMapper.selectById(1);    List<User> users = userMapper.selectList(null);    for (User user : users) {        log.info(String.valueOf(user));    }}

6、ServiceImpl使用提供好的接口

UserService需要继承IService

UserServiceImpl 继承实现类extends ServiceImpl<UserMapper,User>

@Servicepublic class UserServiceImpl extends ServiceImpl<UserMapper,User> implements UserService {}public interface UserService extends IService<User> {}

在controller中:

userServie.函数名

二、NoSQL

Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。

1、Redis自动配置

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

自动配置:

  • RedisAutoConfiguration 自动配置类。RedisProperties 属性类 –> spring.redis.xxx是对redis的配置
  • 连接工厂是准备好的。LettuceConnectionConfiguration、JedisConnectionConfiguration
  • 自动注入了RedisTemplate<Object, Object> : xxxTemplate;
  • 自动注入了StringRedisTemplate;k:v都是String
  • key:value
  • 底层只要我们使用 StringRedisTemplate、****RedisTemplate就可以操作redis

redis环境搭建

1、阿里云按量付费redis。经典网络

2、申请redis的公网连接地址

3、修改白名单 允许0.0.0.0/0 访问

2、RedisTemplate与Lettuce

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

3、切换至jedis

        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-data-redis</artifactId>        </dependency><!--        导入jedis-->        <dependency>            <groupId>redis.clients</groupId>            <artifactId>jedis</artifactId>        </dependency>spring:  redis:      host: r-bp1nc7reqesxisgxpipd.redis.rds.aliyuncs.com      port: 6379      password: lfy:Lfy123456      client-type: jedis      jedis:        pool:          max-active: 10
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/115186.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • centos7 yum安装MongoDB[通俗易懂]

    centos7 yum安装MongoDB[通俗易懂]原文博客地址http://xgs888.top/post/view?id=64centos7yum安装mongodb;1:创建仓库vi/etc/yum.repos.d/mongodb-org-3.4.repo2:把下面的内容复制到文件中保存退出[mongodb-org-3.4]name=MongoDBRepositorybaseurl

  • 鲸鱼优化算法与其他算法对比_鲸鱼优化算法百度百科

    鲸鱼优化算法与其他算法对比_鲸鱼优化算法百度百科文章目录一、理论基础1、鲸鱼优化算法2、鲸鱼优化算法的改进(1)自适应调整权重(2)自适应调整搜索策略(3)AWOA流程图二、仿真对比与分析三、参考文献四、Matlab仿真程序一、理论基础1、鲸鱼优化算法请参考这里。2、鲸鱼优化算法的改进(1)自适应调整权重由于WOA在优化求解的过程中,线性的惯性权重调整策略若选择不合适,将影响算法的收敛速度。因此,本文提出了一种根据当前鲸鱼种群分布情况来自适应改变权值的大小,公式如下:w=d1⋅(Piworst−Pibest)+d2⋅(xiupper−xilo

  • conda换源后没用_打开电视默认信号源

    conda换源后没用_打开电视默认信号源最近由于某些因素清华的conda镜像登不上去了,所以需要换回conda的默认源。查看了condaconfig的文档后,发现直接删除channels即可。命令如下:condaconfig–remove-keychannels

  • SQL Server 返回最后插入记录的自动编号ID

    SQL Server 返回最后插入记录的自动编号ID

  • html浮雕效果代码_css内嵌式代码

    html浮雕效果代码_css内嵌式代码前言最近在看百度地图看到了一个效果,感觉这个效果用在网页上应该蛮赞的,于是就学习了一下。效果图如下:浮雕效果需要用到伸缩盒的知识(flex)flex在chrome是完全支持的,要加-webkit-前缀,其他的浏览器有的支持有的不支持,自己去查css手册,今天主要想讲一下怎么制作出浮雕效果先附上代码:<divclass=”title”>&…

  • laravel5.4 前后台未登陆,跳转到各自的页面

    laravel5.4 前后台未登陆,跳转到各自的页面

    2021年10月25日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号