首页 > 数据库 >java springboot 初体验 (十一)对接mysql

java springboot 初体验 (十一)对接mysql

时间:2022-08-26 17:15:42浏览次数:163  
标签:初体验 java springboot true spring druid datasource import com

  1. 上一篇
    1.   java springboot 初体验 (十)对接ut
    2. https://www.cnblogs.com/zwjvzwj/p/16616151.html
  2. pom文件添加依赖
    1.   数据库依赖
              <!--alibaba druid datasource Druid的依赖-->
              <dependency>
                  <groupId>com.alibaba</groupId>
                  <artifactId>druid</artifactId>
                  <version>${druid.version}</version>
              </dependency>

       

    2.  mybatis-plus。依赖
              <dependency>
                  <groupId>mysql</groupId>
                  <artifactId>mysql-connector-java</artifactId>
              </dependency>
              <!-- mybatisPlus 核心库 -->
              <dependency>
                  <groupId>com.baomidou</groupId>
                  <artifactId>mybatis-plus-boot-starter</artifactId>
                  <version>3.1.0</version>
              </dependency>

       

    3.  日志依赖
              <!-- https://mvnrepository.com/artifact/log4j/log4j -->
              <dependency>
                  <groupId>log4j</groupId>
                  <artifactId>log4j</artifactId>
                  <version>1.2.17</version>
              </dependency>

       

  3.   添加配置文件
    1. application.yml或者application.properties添加配置,如果之前对结果apollo。也可以配置在apollo中
    2. application.yml
      1. spring:
            datasource:
                # DataSource settings
                type: com.alibaba.druid.pool.DruidDataSource
                url: jdbc:mysql://ats-staging.mysql.rds.aliyuncs.com/moka_workwechat_staging-22?useUnicode=true&characterEncoding=utf8
                username: moka_root
                password: Moka2015
                driverClassName: com.mysql.cj.jdbc.Driver
                #连接池的配置信息
                initialSize: 5
                minIdle: 5
                maxActive: 20
                maxWait: 60000
                # 配置获取连接等待超时的时间
                timeBetweenEvictionRunsMillis: 60000
                # 配置一个连接在池中最小生存的时间,单位是毫秒
                minEvictableIdleTimeMillis: 300000
                validationQuery: SELECT 1 FROM DUAL
                testWhileIdle: true
                testOnBorrow: false
                testOnReturn: false
                # 打开PSCache,并且指定每个连接上PSCache的大小
                poolPreparedStatements: true
                maxPoolPreparedStatementPerConnectionSize: 20
                # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
                filters: stat,wall,log4j
                # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
                connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
                #是否启用StatFilter默认值true
                druid:
                    web-stat-filter:
                        enabled: true
        
        druid:
            monitor:
                allow: 127.0.0.1
                deny: 0.0.0.0
                loginUsername: root
                loginPassword: root
                resetEnable: false

         

    3. application.properties
      1. #DataSource settings
        
        spring.datasource.type = com.alibaba.druid.pool.DruidDataSource
        spring.datasource.url = jdbc:mysql://ats-staging.mysql.rds.aliyuncs.com/moka_workwechat_staging-22?useUnicode=true&characterEncoding=utf8
        spring.datasource.username = moka_root
        spring.datasource.password = Moka2015
        spring.datasource.driverClassName = com.mysql.cj.jdbc.Driver
        
        #连接池的配置信息
        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
        
        # 打开PSCache,并且指定每个连接上PSCache的大小
        spring.datasource.poolPreparedStatements=true
        spring.datasource.maxPoolPreparedStatementPerConnectionSize=20
        
        # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
        spring.datasource.filters=stat,wall,log4j
        # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
        spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
        
        #是否启用StatFilter默认值true
        spring.datasource.druid.web-stat-filter.enabled=true
        #多个白名单IP以逗号分隔
        druid.monitor.allow=127.0.0.1
        #多个黑名单IP以逗号分隔
        druid.monitor.deny=0.0.0.0
        #druid监控管理界面登录帐号
        druid.monitor.loginUsername=root
        #druid监控管理界面登录密码
        druid.monitor.loginPassword=root
        #是否开启重置功能
        druid.monitor.resetEnable=false
        
        
        log4j.rootLogger=DEBUG, stdout
        # Console output...
        log4j.appender.stdout=org.apache.log4j.ConsoleAppender
        log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
        log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

         

  4.   添加数据库配置文件
    1. package com.zwj.zwjproject.configuration;
      
      
      import com.alibaba.druid.pool.DruidDataSource;
      import org.springframework.boot.context.properties.ConfigurationProperties;
      import org.springframework.context.annotation.Bean;
      import org.springframework.context.annotation.Configuration;
      
      import javax.sql.DataSource;
      
      /**
       * @ClassName: DruidConfiguration
       * @Author zhangwujie
       * @Date 2022/8/25 6:00 下午
       * @Description: 如果配置文件druid.properties
       */
      @Configuration
      public class DruidConfiguration {
          @Bean
          @ConfigurationProperties(prefix = "spring.datasource")
          public DataSource druidDataSource() {
              return new DruidDataSource();
          }
      
      }
      package com.zwj.zwjproject.configuration;
      
      import com.alibaba.druid.support.http.StatViewServlet;
      import com.alibaba.druid.support.http.WebStatFilter;
      import org.springframework.beans.factory.annotation.Value;
      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;
      
      /**
       * @ClassName: DruidMonitorCOnfiguration
       * @Author zhangwujie
       * @Date 2022/8/26 10:59 上午
       * @Description:
       */
      @Configuration
      public class DruidMonitorConfiguration {
      
          @Value("${druid.monitor.allow:127.0.0.1}")
          private String allow;
          @Value("${druid.monitor.deny}")
          private String deny;
          @Value("${druid.monitor.loginUsername:admin}")
          private String loginUsername;
          @Value("${druid.monitor.loginPassword:password}")
          private String loginPassword;
          @Value("${druid.monitor.resetEnable:false}")
          private String resetEnable;
      
          /**
           * 配置Druid的监控
           * @return
           */
          @Bean
          public ServletRegistrationBean druidStatViewServlet() {
              ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
              servletRegistrationBean.addInitParameter("allow", this.allow);
              servletRegistrationBean.addInitParameter("deny", this.deny);
              servletRegistrationBean.addInitParameter("loginUsername", this.loginUsername);
              servletRegistrationBean.addInitParameter("loginPassword", this.loginPassword);
              servletRegistrationBean.addInitParameter("resetEnable", this.resetEnable);
              return servletRegistrationBean;
          }
      
          /**
           * 配置一个web监控的filter
           * @return
           */
          @Bean
          public FilterRegistrationBean druidStatFilter() {
              FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());
              filterRegistrationBean.addUrlPatterns("/*");
              filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
              return filterRegistrationBean;
          }
      }

       

    2.  

  5.   mybatis配置
    1.   配置数据表对象
      1. package com.zwj.zwjproject.entity;
        
        import com.baomidou.mybatisplus.annotation.TableField;
        import com.baomidou.mybatisplus.annotation.TableName;
        import lombok.Data;
        import lombok.experimental.Accessors;
        
        import java.math.BigDecimal;
        import java.util.Date;
        
        /**
         * @ClassName: WorkwechatLicenseOrder
         * @Author zhangwujie
         * @Date 2022/7/11 11:05 上午
         * @Description:
         */
        @Data
        @Accessors(chain = true)
        @TableName("order")
        public class orderPO {
        
            @TableField("id")
            private Long id;
        
            @TableField("order_id")
            private String orderId;
        
        }

         

      2.  

         

         

    2.   创建一个数据表的mapper
      1. package com.zwj.zwjproject.mapper;
        
        import com.baomidou.mybatisplus.core.mapper.BaseMapper;
        import com.zwj.zwjproject.entity.orderPO;
        import org.apache.ibatis.annotations.*;
        
        @Mapper
        public interface orderMapper extends BaseMapper<orderPO> {
        
        }

         

      2.  
    3.   写一个service层。我单独写了一个dbservice层
      1. package com.zwj.zwjproject.dbService;
        
        import com.baomidou.mybatisplus.extension.service.IService;
        import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
        import com.zwj.zwjproject.entity.orderPO;
        import com.zwj.zwjproject.mapper.orderMapper;
        import org.springframework.stereotype.Service;
        
        /**
         * @ClassName: WorkwechatLicenseOrderDBService
         * @Author zhangwujie
         * @Date 2022/8/26 3:01 下午
         * @Description:
         */
        @Service
        public class OrderDBService extends ServiceImpl<orderMapper, orderPO> implements IService<orderPO>  {
        }

         

      2.  
    4.   控制器里直接写一个新接口调用查询数据
      1.     @ApiOperation(value = "测试mysql接口")
            @PostMapping(value = "/testMysql")
            public RespEntity testMysql() {
                try {
                    int count = orderDBService.count();
                    orderPO byId = orderDBService.getById(3);
        
                    List<orderPO> list = orderDBService.list();
                    return RespEntity.success(list);
                } catch (Exception e) {
                    log.info("TestOuterController testMysql catch error msg={}", e.getMessage(), e);
                    return RespEntity.fail(e.getMessage());
                }
            }

         

      2.  
    5.   启动服务
    6. 调用接口查询数据
    7. 下一篇
      1.   

标签:初体验,java,springboot,true,spring,druid,datasource,import,com
From: https://www.cnblogs.com/zwjvzwj/p/16620045.html

相关文章

  • Springboot+MybatisPlus多数据源比对数据
    欢迎关注博主公众号「Java大师」,专注于分享Java领域干货文章https://www.javaman.cn/基于不同的数据源进行数据比对,比较两个数据库的表之间数据的总量,以及处理后的总......
  • 面经-Java创建对象的过程
    java创建对象的过程主要分为一下五个步骤:(1)类加载检查Java虚拟机(jvm)在读取一条new指令时候,首先检查能否在常量池中定位到这个类的符号引用,并且检查这个符号引用代表的类是......
  • java质数算法
    importjava.util.ArrayList;importjava.util.Iterator;importjava.util.List;importjava.stream.Collectors;importjava.stream.Stream;publicclassMain{publ......
  • 【Java】使用Druid连接池的监控面板排查慢SQL
     默认在后台服务的地址:http://localhost:8078/druid/login.html账号信息放在配置文件中获取:server:port:8078spring:datasource:druid:......
  • 代码审计(Java)——WebGoat_RequestForgeries
    一、Cross-siteRequestForgeries1.level3 这里的level3,就是限制了Referer的参数值为空或者是不等于host即可,单纯为了教学而设计的题目,没啥可说的~因......
  • JavaScript变量及声明
    本文介绍了如何使用语法和示例声明和使用变量。变量用于将数据存储在JavaScript代码中。在JavaScript中使用变量之前,必须先对其进行声明。让我们看一下如何声明一个变量。......
  • JavaScript if else语句
    在编写程序时,可能需要从一组给定的路径中采用一个。在这种情况下,您需要使用条件语句,以使程序可以做出正确的决定并执行正确的操作。在JavaScript中,if-else语句用于在条件......
  • JavaScript switch语句
    除了if...else之外,JavaScript还有一个称为switch语句的功能。switch是一种条件语句,它将针对多种可能的情况评估表达式,并根据匹配的情况执行一个或多个代码块。switch语......
  • Caused by: java.lang.ClassNotFoundException: org.springframework.boot.context.pr
    springboot的版本和springcloud的版本不一致导致Causedby:java.lang.ClassNotFoundException:org.springframework.boot.context.properties.Configurati错误截图......
  • 【Java面试】准备跳槽!那这期面试题必须要会,请描述一下Redis的缓存淘汰策略
    “请你描述一下Redis的缓存淘汰策略”你如果你正好遇到这个问题,想好怎么回答了吗?关于这个问题,我把高手的回答整理到了15W字的面试文档里面大家可以私信留言领取。下面......