日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

【SpringBoot 2】(十)数据库相关

發布時間:2025/3/8 javascript 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【SpringBoot 2】(十)数据库相关 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

寫在前面🛫更多知識總結見SpringBoot 2專欄
🚕本篇知識點總結自尚硅谷雷神的視頻
🚒博主對于該知識尚在學習階段
🚄如果發現存在問題請毫不吝嗇的指出
🚀🚀扎哇太棗糕的博客首頁🚀🚀

文章目錄

  • 1 數據庫連接
    • 1.1 配置數據庫連接信息
    • 1.2 整合Druid數據源
  • 2 SpringBoot整合MyBatis
    • 2.1 配置文件開發
    • 2.2 純注解開發
  • 3 SpringBoot整合MyBatis-Plus
    • 3.1 普通的CRUD方法
    • 3.2 MyBatis-plus的分頁實現

1 數據庫連接

1.1 配置數據庫連接信息

??如果想要使用數據庫連接池連接數據庫進行SQL操作的話,在SpringBoot中需要經過如下三個步驟:
第一步: 導入jdbc開發的啟動場景

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

第二步: 導入數據庫驅動
??之所以框架底層沒有自動導入數據庫的驅動,是因為不同的數據庫使用的驅動不同,這需要用戶根據自己的需要來進行選擇。雖然框架沒有對指定數據庫驅動進行自動導入,但是對不同數據庫驅動的版本都進行了版本仲裁,也就是說我們可以直接導入無需定義版本號。當然也可以自定義版本號,maven會根據自身的就近依賴原則導入自定義的版本

<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.32</version> </dependency>

第三步: 配置數據庫連接的配置文件

# 設置數據庫 spring:datasource:driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://localhost:3306/testusername: rootpassword: "123456"

1.2 整合Druid數據源

??SpringBoot框架中默認使用的是Hikari數據源,這也就意味著如果要是想要修改數據源的話,無非就是兩種方法:自定義配置類、引入相應的啟動器依賴再配置配置文件

第一步: 引入Druid的啟動器依賴

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

第二步: 配置配置文件(選學,框架一般都有默認的配置)

spring:datasource:url: jdbc:mysql://localhost:3306/db_accountusername: rootpassword: 123456driver-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

2 SpringBoot整合MyBatis

??mybatis開發的時候有兩種開發模式:使用配置文件進行開發、純注解開發,二者各有優點。使用配置文件進行開發在處理更加復雜的SQL語句的時候邏輯更加清晰,純注解開發比較適合簡單的SQL語句,于是我們可以在開發的時候混合使用兩種方法,這樣可以大大提升開發效率。

2.1 配置文件開發

第一步: 引入啟動器依賴
??小知識:SpringBoot官方的所有技術啟動器的命名都是spring-boot-starter-xxx而第三方技術的啟動器命名則是xxx-spring-boot-starter。值得注意的是:MyBatis的啟動器內部引用了dbc開發的啟動場景,所以無需重復引用

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

第二步: 編寫mapper接口并標注@Mapper注解

@Mapper public interface StuMapper {Stu queryBySid(int sid); }

第三步: 編寫映射文件并綁定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.xiaochen.mapper.StuMapper"><select id="queryBySid" resultType="com.xiaochen.domain.Stu">select * from stu where sid=#{sid}</select></mapper>

第四步: 在配置文件中指定之前MyBatis配置文件的各種信息

# mybatis的所有配置 mybatis:mapper-locations: classpath:com.xiaochen.mapper/*.xml# 所有的全局配置文件的配置項在這下面配置configuration:# 開啟駝峰命名數據庫中字段值的下劃線‘_’加字母會被認為是大寫map-underscore-to-camel-case: true

2.2 純注解開發

第一步: 引入啟動器依賴

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

第二步: 編寫mapper接口并標注@Mapper注解,使用對應的注解進行SQL語句操作

@Mapper public interface StuMapper {@Select("select * from stu where sid=#{sid}")Stu queryBySid(int sid); }

3 SpringBoot整合MyBatis-Plus

3.1 普通的CRUD方法

??MyBatis-plus的啟動器內部不止引用了dbc開發的啟動場景,還導入了MyBatis的啟動器,所以這兩個都無需再重復引用
第一步: 引入啟動器依賴

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

mapper層:

??編寫mapper接口標注@Mapper注解,并繼承BaseMapper類。這是MyBatis-plus的獨有方式,這樣做的好處是繼承之后直接使用父類中已經寫好的簡單CRUD方法,但是一些復雜的SQL業務還是需要使用映射文件來實現的,進一步提高了代碼開發的效率

@Mapper public interface StuMapper extends BaseMapper<Stu> {}

??MyBatis-plus進行數據庫表的增刪改查的時候,默認把繼承BaseMapper類時傳進去的泛型名稱當做表名去查找,如果泛型與數據庫中的表名不對應的話,可以在實體類使用注解標識,除此之外注解還可以用來標識主鍵和非表中字段屬性

@NoArgsConstructor @AllArgsConstructor @Data @TableName("stu") public class Stu {// 表名該字段是定義的臨時變量,并不存在于數據庫的表中@TableField(exist = false)private String gender;// 標明表的主鍵@TableIdprivate int sid;private String sname;private String age;private String course;private int cardid; }

??編寫映射文件并綁定mapper接口(如果有的話)。MyBatis-plus自動配置好了默認的mapper-locations,也就是映射文件的存放位置為classpath:/mapper/**/*.xml,于是我們就按照它的默認規則在靜態資源路徑下mapper文件夾下。本案例中沒有映射文件,于是就不創建

??如果有需要的話,還可以在配置文件中指定MyBatis-plus配置文件的各種信息

service層:
??service接口繼承IService類

public interface StuService extends IService<Stu> {}

??service的實現類先是繼承ServiceImpl并傳兩個泛型(mapper接口,實體類),然后實現service接口

@Service public class StuServiceImpl extends ServiceImpl<StuMapper, Stu> implements StuService {}

controller層: 直接使用service繼承類的簡單方法

@Controller public class TableController {@AutowiredStuServiceImpl stuService;/*** 點擊Advanced table按鈕,進行頁面轉發,并攜帶一個表格數據* @param model 用于存儲數據* @return 頁面轉發forward 到 /table/dynamic_table.html*/@GetMapping("/dynamic_table")public String dynamic_table(Model model) {// 從數據庫中查出user表進行展示List<Stu> list = stuService.list();model.addAttribute("stus", list);return "/table/dynamic_table";} }

3.2 MyBatis-plus的分頁實現

??MyBatis-plus的分頁功能實現需要先自定義一個配置類,向容器中注冊一個Interceptor

@Configuration public class MyBatisConfig {@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor();paginationInnerInterceptor.setOverflow(true);paginationInnerInterceptor.setMaxLimit(500L);interceptor.addInnerInterceptor(paginationInnerInterceptor);return interceptor;} }

然后就可以像普通的CRUD操作一樣,直接使用service繼承類的分頁的相關方法即可

@GetMapping("/dynamic_table") public String dynamic_table(@RequestParam(value = "pn", defaultValue = "1")Integer pn, Model model) {// 分頁從數據庫中查出stu表的所有數據,當前頁、總頁數、總條數……Page<Stu> stuPage = new Page<>(pn, 1);Page<Stu> page = stuService.page(stuPage);model.addAttribute("page", page);return "/table/dynamic_table"; }

總結

以上是生活随笔為你收集整理的【SpringBoot 2】(十)数据库相关的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。