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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring Boot2.x-08Spring Boot2.1.2 整合 Mybatis1.3.2 + 通用Mapper2.1.4 + PageHelper1.2.10 + Druid 1.1.10

發(fā)布時(shí)間:2025/3/21 javascript 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring Boot2.x-08Spring Boot2.1.2 整合 Mybatis1.3.2 + 通用Mapper2.1.4 + PageHelper1.2.10 + Druid 1.1.10 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 概述
  • 整合 MyBatis
  • 整合 通用Mapper2.1.4及 PageHelper1.2.10
    • 添加依賴
    • 通用mapper 編寫
    • application.yml增加配置
    • 集成驗(yàn)證測試
  • 整合Druid (純配置文件)
    • 添加依賴
    • application.yml增加配置
    • 集成驗(yàn)證測試
  • 代碼

概述

通用Mapper: https://gitee.com/free/Mapper/wikis/Home

分頁插件 pagehelper: https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/HowToUse.md

整合官方指導(dǎo):https://github.com/abel533/MyBatis-Spring-Boot

不過版本較低,我們這里升級(jí)下Spring Boot等框架的版本,同時(shí)整合下阿里巴巴的Druid連接池 。

項(xiàng)目結(jié)構(gòu)如下

整合 MyBatis

參考上篇博文 Spring Boot2.x-07Spring Boot2.1.2整合Mybatis


整合 通用Mapper2.1.4及 PageHelper1.2.10

添加依賴

既然是spring boot項(xiàng)目,肯定是添加xxx-starter了. 非Spring Boot項(xiàng)目可以添加單獨(dú)的jar包。

<!--通用Mapper插件 文檔地址:https://gitee.com/free/Mapper/wikis/Home 同pagehelper 同一個(gè)作者劉增輝大神開源 --> <dependency><groupId>tk.mybatis</groupId><artifactId>mapper-spring-boot-starter</artifactId><version>2.1.4</version> </dependency><!-- 分頁插件 pagehelper 文檔地址:https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/HowToUse.md --> <dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.2.10</version> </dependency>

通用mapper 編寫

package com.artisan.common;import tk.mybatis.mapper.common.Mapper; import tk.mybatis.mapper.common.MySqlMapper; /*** * @author yangshangwei** @param <T> 通用mapper 創(chuàng)建CommonMapper接口繼承Mapper* * * 通用 Mapper 是一個(gè)可以實(shí)現(xiàn)任意 MyBatis 通用方法的框架,項(xiàng)目提供了常規(guī)的增刪改查操作以及 Example 相關(guān)的單表操作。* 通用 Mapper 是為了解決 MyBatis 使用中 90% 的基本操作.* PageHelper則提供通用的分頁查詢功能,使用它們可以很方便的進(jìn)行開發(fā),可以節(jié)省開發(fā)人員大量的時(shí)間* * 通用Mapper的GIT地址: https://gitee.com/free/Mapper分頁插件的GIT地址: https://github.com/pagehelper/Mybatis-PageHelper* */ public interface CommonMapper<T> extends Mapper<T>, MySqlMapper<T> {}

application.yml增加配置

#mappers 多個(gè)接口時(shí)逗號(hào)隔開 mapper: mappers: com.artisan.common.CommonMapper # 通用dao ,是個(gè)類,不是包名not-empty: false # 設(shè)置以后,會(huì)去判斷 insert 和 update 中字符串類型!=''identity: MYSQL#pagehelper pagehelper: # 配置使用哪種數(shù)據(jù)庫語言,不配置的話pageHelper也會(huì)自動(dòng)檢測,這里使用的mysql。helper-dialect: mysql# 分頁合理化參數(shù),默認(rèn)值為false。當(dāng)該參數(shù)設(shè)置為 true 時(shí),pageNum<=0 時(shí)會(huì)查詢第一頁, pageNum>pages(超過總數(shù)時(shí)),會(huì)查詢最后一頁。默認(rèn)false 時(shí),直接根據(jù)參數(shù)進(jìn)行查詢reasonable: true # 支持通過 Mapper 接口參數(shù)來傳遞分頁參數(shù),默認(rèn)值false,分頁插件會(huì)從查詢方法的參數(shù)值中,自動(dòng)根據(jù)上面 params 配置的字段中取值,查找到合適的值時(shí)就會(huì)自動(dòng)分頁supportMethodsArguments: true# 為了支持startPage(Object params)方法,增加了該參數(shù)來配置參數(shù)映射,用于從對(duì)象中根據(jù)屬性名取值, 可以配置 pageNum,pageSize,count,pageSizeZero,reasonable,不配置映射的用默認(rèn)值,默認(rèn)值為pageNum=pageNum;pageSize=pageSize;count=countSql;reasonable=reasonable;pageSizeZero=pageSizeZero。params: count=countSql

集成驗(yàn)證測試

注意看注釋,就不一一說明了。

package com.artisan.mapper;import java.util.List;import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select;import com.artisan.common.CommonMapper; import com.artisan.model.Artisan; /*** * @author yangshangwei* * 增加@Mapper這個(gè)注解之后,Spring 啟動(dòng)時(shí)會(huì)自動(dòng)掃描該接口,這樣就可以在需要使用時(shí)直接注入 Mapper 了* * 使用通用mapper,在Mapper接口層繼承剛才的CommonMapper接口,這樣單表的增刪改查就實(shí)現(xiàn)了,無須xml* * 當(dāng)然了,可以使用內(nèi)置通用mapper* * 也可以使用xml 或者注解*/@Mapper public interface ArtisanMapper extends CommonMapper<Artisan>{//自己來編寫xml,不適用內(nèi)置的方法List<Artisan> selectAllArtisansByXml();//自己來注解,不適用內(nèi)置的方法@Select("select id,name,sex from artisan")List<Artisan> selectAllArtisansByAnno(); }

接口中的兩個(gè)方法是為了演示使用xml或者注解添加的方法,其實(shí)接口繼承CommonMapper<Artisan>就可以通過CommonMapper內(nèi)置的方法實(shí)現(xiàn)對(duì)單表的CRUD了。

接下來我們來驗(yàn)證下繼承CommonMapper內(nèi)置的方法實(shí)現(xiàn)對(duì)單表的CRUD

service層

package com.artisan.service;import java.util.List;import com.artisan.model.Artisan;public interface ArtisanService {List<Artisan> getAllArtisanList();List<Artisan> getArtisanListByPage(int pageNum , int pageSize);}

實(shí)現(xiàn)類

package com.artisan.service.impl;import java.util.List;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;import com.artisan.mapper.ArtisanMapper; import com.artisan.model.Artisan; import com.artisan.service.ArtisanService; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo;import lombok.extern.slf4j.Slf4j;@Service @Slf4j public class ArtisanServiceImpl implements ArtisanService {@Autowiredprivate ArtisanMapper artisanMapper;/*** 調(diào)用 通用mapper提供的方法*/@Overridepublic List<Artisan> getAllArtisanList() {return artisanMapper.selectAll();}@Overridepublic List<Artisan> getArtisanListByPage(int pageNum, int pageSize) {// 分頁插件的使用 第一個(gè)參數(shù)是當(dāng)前頁 第二個(gè)參數(shù)是每頁顯示的條數(shù)// 引用分頁插件以后,Mybatis分頁會(huì)變得特別簡單,// 需要注意的是,在你需要進(jìn)行分頁的 MyBatis 查詢方法前調(diào)用 PageHelper.startPage 靜態(tài)方法即可,// 緊跟在這個(gè)方法后的第一個(gè)MyBatis 查詢方法會(huì)被進(jìn)行分頁PageHelper.startPage(pageNum, pageSize).setOrderBy("id desc");List<Artisan> artisanList = artisanMapper.selectAll();// 需要注意的是查詢語句必須緊跟這一句,且只能使用一次,意思就是如果還有一個(gè)分頁查詢需要再定義一次PageHelper.startPage(pageNum, pageSize)// 用PageInfo對(duì)結(jié)果進(jìn)行包裝,返回// PageInfo page = new PageInfo(artisanList);// PageInfo<Artisan> pageInfo = new PageInfo<Artisan>(artisanList);final PageInfo<Artisan> pageInfo = PageHelper.startPage(pageNum, pageSize).setOrderBy("id desc").doSelectPageInfo(() -> this.artisanMapper.selectAll());log.info("[lambda寫法] - [分頁信息] - [{}]", pageInfo.toString());PageHelper.startPage(pageNum, pageSize).setOrderBy("id desc");final PageInfo<Artisan> artisanPageInfo = new PageInfo<>(this.artisanMapper.selectAll());log.info("[普通寫法] - [{}]", artisanPageInfo);return artisanList;}}

控制層

package com.artisan.controller;import java.util.List;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController;import com.artisan.model.Artisan; import com.artisan.result.CodeMsg; import com.artisan.result.Result; import com.artisan.service.ArtisanService;@RestController public class ArtisanController {@Autowiredprivate ArtisanService artisanService;// 正常情況@GetMapping("/artisans")public Result<List<Artisan>> selectAllArtisan() {return Result.success(artisanService.getAllArtisanList());}// 模擬異常情況@GetMapping("/artisansError")public Result<List<Artisan>> selectAllArtisanError() {return Result.error(CodeMsg.SERVER_ERROR);}// 分頁 http://localhost:8089/artisansPage?pageNum=2&pageSize=3@GetMapping("/artisansPage")public Result<List<Artisan>> selectPageArtisan(int pageNum, int pageSize) {return Result.success(artisanService.getArtisanListByPage(pageNum, pageSize));}}

啟動(dòng)spring boot ,訪問 http://localhost:8089/artisans (port在配置文件中指定為8089)

http://localhost:8089/artisansPage?pageNum=2&pageSize=3

當(dāng)然了,也可以繼續(xù)使用xml或者注解來使用mybatis ,

mapper映射文件(xml方式時(shí)使用,注解就用不到了)


整合Druid (純配置文件)

添加依賴

<!--阿里巴巴數(shù)據(jù)源 --> <dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.10</version> </dependency>

application.yml增加配置

spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driver # JDBC連接Mysql6以上com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/artisan?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=falseusername: rootpassword: roottype: com.alibaba.druid.pool.DruidDataSourcedruid: # 下面為連接池的補(bǔ)充設(shè)置,應(yīng)用到上面所有數(shù)據(jù)源中# 初始化大小,最小,最大initial-size: 5min-idle: 5max-active: 20max-wait: 60000 # 配置獲取連接等待超時(shí)的時(shí)間time-between-eviction-runs-millis: 60000 # 配置間隔多久才進(jìn)行一次檢測,檢測需要關(guān)閉的空閑連接,單位是毫秒min-evictable-idle-time-millis: 300000 # 配置一個(gè)連接在池中最小生存的時(shí)間,單位是毫秒validation-query: SELECT 1 FROM DUALtest-while-idle: true # 當(dāng)連接空閑時(shí),是否執(zhí)行連接測試test-on-borrow: false # 當(dāng)從連接池借用連接時(shí),是否測試該連接test-on-return: false # 在連接歸還到連接池時(shí)是否測試該連接# 打開PSCache,并且指定每個(gè)連接上PSCache的大小pool-prepared-statements: truemax-pool-prepared-statement-per-connection-size: 20# 配置監(jiān)控統(tǒng)計(jì)攔截的filters,去掉后監(jiān)控界面sql無法統(tǒng)計(jì),'wall'用于防火墻 ,不能用log4j,不然報(bào)錯(cuò):Failed to bind properties under 'spring.datasource.druid' to javax.sql.DataSource:filters: stat,wall,slf4juse-global-data-source-stat: true# 通過connectProperties屬性來打開mergeSql功能;慢SQL記錄connect-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000# 配置監(jiān)控服務(wù)器stat-view-servlet:login-username: artisanlogin-password: artisanreset-enable: falseurl-pattern: /druid/*# 添加IP白名單#allow:# 添加IP黑名單,當(dāng)白名單和黑名單重復(fù)時(shí),黑名單優(yōu)先級(jí)更高#deny:web-stat-filter:# 添加過濾規(guī)則url-pattern: /*# 忽略過濾格式exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"

集成驗(yàn)證測試

項(xiàng)目啟動(dòng)的時(shí)候也可以看到初始化信息

監(jiān)測頁面:http://ip:port/druid/index.html

因?yàn)檫@里配置了用戶名和密碼,先訪問 http://localhost:8089/druid/login.html

訪問幾次數(shù)據(jù),然后就可以看到了


代碼

見github: https://github.com/yangshangwei/springbootMybatisCommonMapperAndPageheper

總結(jié)

以上是生活随笔為你收集整理的Spring Boot2.x-08Spring Boot2.1.2 整合 Mybatis1.3.2 + 通用Mapper2.1.4 + PageHelper1.2.10 + Druid 1.1.10的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。