<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
如果想要使用資料庫連線池連線資料庫進行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.Driver
url: jdbc:mysql://localhost:3306/test
username: root
password: "123456"
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_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
mybatis開發的時候有兩種開發模式:使用組態檔進行開發、純註解開發,二者各有優點。使用組態檔進行開發在處理更加複雜的SQL語句的時候邏輯更加清晰,純註解開發比較適合簡單的SQL語句,於是我們可以在開發的時候混合使用兩種方法,這樣可以大大提升開發效率。
第一步: 引入啟動器依賴 小知識: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
第一步: 引入啟動器依賴
<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); }
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; // 標明表的主鍵 @TableId private 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 { @Autowired StuServiceImpl 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"; } }
MyBatis-plus的分頁功能實現需要先自定義一個設定類,向容器中註冊一個Interceptor
@Configuration public class MyBatisConfig { @Bean public 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"; }
到此這篇關於SpringBoot2零基礎到精通之資料庫專項精講的文章就介紹到這了,更多相關SpringBoot2 資料庫內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45