誤刪boot怎么開機,Spring boot(6) 數據訪問

 2023-10-15 阅读 29 评论 0

摘要:Spring boot(6) 數據訪問 學習視頻:https://www.bilibili.com/video/BV19K4y1L7MT?p=62&spm_id_from=pageDriver 1.數據源的自動配置-HikariDataSource 1.1 導入JDBC場景 <dependency><groupId>org.springframework.boot</groupId><a

Spring boot(6) 數據訪問

學習視頻:https://www.bilibili.com/video/BV19K4y1L7MT?p=62&spm_id_from=pageDriver

1.數據源的自動配置-HikariDataSource

1.1 導入JDBC場景

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

image-20210406161018463

誤刪boot怎么開機,導入數據源后需要導入數據庫驅動,指明使用哪個數據庫

默認版本:<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>

1.2 自動配置

自動配置好的類:

  • DataSourceAutoConfiguration : 數據源的自動配置

    • 修改數據源相關的配置:spring.datasource
    • 數據庫連接池的配置,是自己容器中沒有DataSource才自動配置的
    • 底層配置好的連接池是:HikariDataSource
	@Configuration(proxyBeanMethods = false)@Conditional(PooledDataSourceCondition.class)@ConditionalOnMissingBean({ DataSource.class, XADataSource.class })@Import({ DataSourceConfiguration.Hikari.class, DataSourceConfiguration.Tomcat.class,DataSourceConfiguration.Dbcp2.class, DataSourceConfiguration.OracleUcp.class,DataSourceConfiguration.Generic.class, DataSourceJmxConfiguration.class })protected static class PooledDataSourceConfiguration
  • java調用接口獲取數據?DataSourceTransactionManagerAutoConfiguration: 事務管理器的自動配置

  • JdbcTemplateAutoConfiguration: JdbcTemplate的自動配置,可以來對數據庫進行crud

    • 可以修改這個配置項@ConfigurationProperties(prefix = “spring.jdbc”) 來修改JdbcTemplate
    • @Bean@Primary JdbcTemplate;容器中有這個組件
  • JndiDataSourceAutoConfiguration: jndi的自動配置

  • boot文件,XADataSourceAutoConfiguration: 分布式事務相關的

1.3 修改配置項

spring:datasource:url: jdbc:mysql://localhost:3306/db_accountusername: rootpassword: 123456driver-class-name: com.mysql.jdbc.Driver

1.4 測試

@Slf4j
@SpringBootTest
class Boot05WebAdminApplicationTests {@AutowiredJdbcTemplate jdbcTemplate;@Testvoid contextLoads() {//        jdbcTemplate.queryForObject("select * from account_tbl")
//        jdbcTemplate.queryForList("select * from account_tbl",)Long aLong = jdbcTemplate.queryForObject("select count(*) from account_tbl", Long.class);log.info("記錄總數:{}",aLong);}}

2.使用Druid數據源

2.1 Druid官方網址

github:https://github.com/alibaba/druid

整合第三方技術的兩種方式:

  • 自定義
  • 找starter

2.2 自定義方式

1.創建數據源

        <dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.17</version></dependency><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"destroy-method="close"><property name="url" value="${jdbc.url}" /><property name="username" value="${jdbc.username}" /><property name="password" value="${jdbc.password}" /><property name="maxActive" value="20" /><property name="initialSize" value="1" /><property name="maxWait" value="60000" /><property name="minIdle" value="1" /><property name="timeBetweenEvictionRunsMillis" value="60000" /><property name="minEvictableIdleTimeMillis" value="300000" /><property name="testWhileIdle" value="true" /><property name="testOnBorrow" value="false" /><property name="testOnReturn" value="false" /><property name="poolPreparedStatements" value="true" /><property name="maxOpenPreparedStatements" value="20" />

bootcamp怎么安裝,spring boot 可以使用yml方式

2.StatView

StatViewServlet的用途包括:

  • 提供監控信息展示的html頁面
  • 提供監控信息的JSON API
	<servlet><servlet-name>DruidStatView</servlet-name><servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class></servlet><servlet-mapping><servlet-name>DruidStatView</servlet-name><url-pattern>/druid/*</url-pattern></servlet-mapping>

3.StatFile

需要給數據源中配置如下屬性;可以允許多個filter,多個用,分割;如:

image-20210406184244352

慢SQL記錄

<bean id="stat-filter" class="com.alibaba.druid.filter.stat.StatFilter"><property name="slowSqlMillis" value="10000" /><property name="logSlowSql" value="true" />
</bean>使用 slowSqlMillis 定義慢SQL的時長

2.3 使用官方Starter方式

1.引入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的配置

    private static final String FILTER_STAT_PREFIX = "spring.datasource.druid.filter.stat";private static final String FILTER_CONFIG_PREFIX = "spring.datasource.druid.filter.config";private static final String FILTER_ENCODING_PREFIX = "spring.datasource.druid.filter.encoding";private static final String FILTER_SLF4J_PREFIX = "spring.datasource.druid.filter.slf4j";private static final String FILTER_LOG4J_PREFIX = "spring.datasource.druid.filter.log4j";private static final String FILTER_LOG4J2_PREFIX = "spring.datasource.druid.filter.log4j2";private static final String FILTER_COMMONS_LOG_PREFIX = "spring.datasource.druid.filter.commons-log";private static final String FILTER_WALL_PREFIX = "spring.datasource.druid.filter.wall";

3.配置示例

spring:datasource:url: jdbc:mysql://localhost:3306/bookstoreusername: rootpassword: '073838'driver-class-name: com.mysql.jdbc.Driverdruid:aop-patterns: com.atguigu.admin.*  #監控SpringBeanfilters: stat,wall     # 底層開啟功能,stat(sql監控),wall(防火墻)stat-view-servlet:   # 配置監控頁功能enabled: truelogin-username: adminlogin-password: adminresetEnable: falseweb-stat-filter:  # 監控webenabled: trueurlPattern: /*exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*'filter:stat:    # 對上面filters里面的stat的詳細配置slow-sql-millis: 1000logSlowSql: trueenabled: truewall:enabled: trueconfig:drop-table-allow: false

訪問監控地址:http://localhost:8080/druid/

3.整合mybatis

3.1 引入starter

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

引入的jar包:

image-20210408144403874

3.2 配置模式

開發步驟

1.引入mybatis、druid的starter,并配好配置

image-20210408152352727

2.寫全局配置和mapper配置文件,并在yml指定好位置

image-20210408152438126

配置:

mybatis:config-location: classpath:mybatis/mybatis-config.xml #全局配置文件位置mapper-locations: classpath:mybatis/mapper/*.xml #sql映射文件位置
3.編寫bean、mapper、service、controller

BookUser:

@Data
public class BookUser {private Long id;private String username;private String password;private String email;
}

UserMapper:

@Mapper
public interface UserMapper {public BookUser getUser(Long id);
}

sql映射文件UserMapper.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.deserts.boot.mapper.UserMapper"><select id="getUser" resultType="com.deserts.boot.bean.BookUser" parameterType="long">select * from bs_user where id = #{id}</select>
</mapper>

UserService:

@Service
public class UserService {@AutowiredUserMapper userMapper;public BookUser getById(Long id){return userMapper.getUser(id);}
}

UserController:

@RestController
public class UserController {@AutowiredUserService userService;@GetMapping("/user")public BookUser getUserById(@RequestParam("id") Long id){BookUser user = userService.getById(id);return user;}
}
4.測試結果:

image-20210408152843038

兩種全局配置方式

1、同上,使用xml配置并指定配置文件位置

mybatis:config-location: classpath:mybatis/mybatis-config.xml #全局配置文件位置mapper-locations: classpath:mybatis/mapper/*.xml #sql映射文件位置

2、使用yml直接配置

mybatis:mapper-locations: classpath:mybatis/mapper/*.xml #sql映射文件位置configuration: #全局配置map-underscore-to-camel-case: true #開啟駝峰命名映射

3.3 注解模式

簡單的語句可以不寫mapper映射文件,直接使用注解的方式去編寫

@Mapper
public interface UserMapper {@Select("select * from bs_user where id = #{id}")public BookUser getUser(Long id);
}

兩種方式也可以混合使用

3.4 開發步驟總結

  1. 引入mybatis-starter
  2. 配置application.yaml中,指定mapper-location位置即可
  3. 編寫Mapper接口并標注@Mapper注解
  4. 簡單方法直接注解方式,復雜方法編寫mapper.xml進行綁定映射.@MapperScan(“com.atguigu.admin.mapper”) 簡化,其他的接口就可以不用標注@Mapper注解*

4.整合mybatis-plus

加入依賴

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

自動配置

  • MybatisPlusAutoConfiguration 配置類,MybatisPlusProperties 配置項綁定。
  • SqlSessionFactory 自動配置好。底層是容器中默認的數據源
  • mapperLocations 自動配置好的。有默認值。映射文件放在classpath:/mapper/**/*.xml這個路徑即可被自動掃描
  • 容器中也自動配置好了 SqlSessionTemplate

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/4/137195.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息