中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

南京酒店網(wǎng)站制作新聞頭條

南京酒店網(wǎng)站制作,新聞頭條,汕頭哪里做網(wǎng)站,淘寶網(wǎng)站邊上的導航欄怎么做文章目錄 概述介紹MyBatis-Plus 常用配置分頁插件配置類注解配置 快速入門maven 依賴編寫配置文件編寫啟動類編寫 MybatisPlus 配置類 代碼生成器:MybatisPlusGeneratormaven依賴代碼生成器核心類 概述 介紹 MyBatis-Plus(簡稱 MP)是一個 M…

文章目錄

  • 概述
    • 介紹
    • MyBatis-Plus 常用配置
    • 分頁插件配置類
    • 注解配置
  • 快速入門
    • maven 依賴
    • 編寫配置文件
    • 編寫啟動類
    • 編寫 MybatisPlus 配置類
  • 代碼生成器:MybatisPlusGenerator
    • maven依賴
    • 代碼生成器核心類

概述

介紹

MyBatis-Plus(簡稱 MP)是一個 MyBatis 的增強工具,在 MyBatis 的基礎(chǔ)上只做增強不做改變,為簡化開發(fā)、提高效率而生。

主頁: 傳送門

引入 MyBatis-Plus 之后請不要再次引入 MyBatis 以及 MyBatis-Spring,以避免因版本差異導致的問題。

特性:

  • 無侵入:只做增強不做改變,引入它不會對現(xiàn)有工程產(chǎn)生影響,如絲般順滑
  • 損耗小:啟動即會自動注入基本 CURD,性能基本無損耗,直接面向?qū)ο蟛僮?/li>
  • 強大的 CRUD 操作:內(nèi)置通用 Mapper、通用 Service,僅僅通過少量配置即可實現(xiàn)單表大部分 CRUD 操作,更有強大的條件構(gòu)造器,滿足各類使用需求
  • 支持 Lambda 形式調(diào)用:通過 Lambda 表達式,方便的編寫各類查詢條件,無需再擔心字段寫錯
  • 支持多種數(shù)據(jù)庫:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer2005、SQLServer 等多種數(shù)據(jù)庫
  • 支持主鍵自動生成:支持多達 4 種主鍵策略(內(nèi)含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解決主鍵問題
  • 支持 XML 熱加載:Mapper 對應的 XML 支持熱加載,對于簡單的 CRUD 操作,甚至可以無 XML 啟動
  • 支持 ActiveRecord 模式:支持 ActiveRecord 形式調(diào)用,實體類只需繼承 Model 類即可進行強大的 CRUD 操作
  • 支持自定義全局通用操作:支持全局通用方法注入( Write once, use anywhere )
  • 支持關(guān)鍵詞自動轉(zhuǎn)義:支持數(shù)據(jù)庫關(guān)鍵詞(order、key…)自動轉(zhuǎn)義,還可自定義關(guān)鍵詞
  • 內(nèi)置代碼生成器:采用代碼或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 層代碼,支持模板引擎,更有超多自定義配置等您來使用
  • 內(nèi)置分頁插件:基于 MyBatis 物理分頁,開發(fā)者無需關(guān)心具體操作,配置好插件之后,寫分頁等同于普通 List 查詢
  • 內(nèi)置性能分析插件:可輸出 Sql 語句以及其執(zhí)行時間,建議開發(fā)測試時啟用該功能,能快速揪出慢查詢
  • 內(nèi)置全局攔截插件:提供全表 delete 、 update 操作智能分析阻斷,也可自定義攔截規(guī)則,預防誤操作
  • 內(nèi)置 Sql 注入剝離器:支持 Sql 注入剝離,有效預防 Sql 注入攻擊

MyBatis-Plus 常用配置

MyBatis-Plus 的配置可以通過 application.propertiesapplication.yml 文件進行。以下是一些常用的配置選項及其說明。

mybatis-plus:# 指定MyBatis-Plus映射文件的位置mapper-locations: classpath:mapper/*.xml# 指定MyBatis-Plus映射文件的位置。遞歸查找所有子目錄中符合.xml格式的文件#mapper-locations: "classpath*:/mapper/**/*.xml"# 指定實體類的包路徑,自動掃描并注冊別名type-aliases-package: com.example.yourproject.entity# 全局配置。用于設(shè)置MyBatis-Plus的一些整體行為global-config:db-config:# 主鍵生成策略。默認auto??蛇x值有auto(自動增長)、none(無)、input(手動輸入)、id_worker(雪花算法)、uuid等id-type: auto# 表前綴,用于生成 SQL 時自動去掉前綴table-prefix: t_# 配置邏輯刪除字段(如果使用了邏輯刪除功能)logic-delete-field: deleted# 邏輯刪除字段的值,表示已刪除logic-delete-value: 1# 邏輯刪除字段的值,表示未刪除logic-not-delete-value: 0# 字段策略,可選值有 not_null(非空插入)、not_empty(非空插入)、ignore(忽略)等field-strategy: not_empty# 是否開啟大寫模式,生成的 SQL 字段名將全部大寫capital-mode: true# 是否刷新緩存,默認為 truerefresh: true# 分頁配置。用于啟用分頁功能pagination:# 每頁大小。默認10page-size: 10# 是否統(tǒng)計總記錄數(shù)。默認truetotal: true# 是否合理化分頁,當分頁參數(shù)不合理時,自動調(diào)整。默認falsereasonable: true# 是否支持方法參數(shù)作為分頁參數(shù)。默認falsesupport-methods-arguments: true# 分頁參數(shù)名,可以自定義params: null# 配置。用于configuration:# 開啟下劃線轉(zhuǎn)駝峰命名規(guī)則。默認truemap-underscore-to-camel-case: true# 設(shè)置MyBatis-Plus的日志輸出。日志實現(xiàn)類,org...logging.stdout.StdOutImpl (控制臺輸出)或其他日志實現(xiàn)類log-impl: org.apache.ibatis.logging.stdout.StdOutImpl 

注:

  • mybatis-plus.mapper-locations:指定MyBatis-Plus映射文件的位置。

    若不指定,MyBatis-Plus 會嘗試從 resources/mapper/ 目錄下加載 XML 文件(這是 Spring Boot 和 MyBatis 的默認行為)

  • type-aliases-package:指定實體類的包路徑,自動掃描并注冊別名。

    如果實體類名與數(shù)據(jù)庫表名一致,或者已經(jīng)通過@TableName 注解指定了正確的表名,則該配置可以缺省

    該配置缺省時,MyBatis-Plus會自動識別實體類并映射到相應的數(shù)據(jù)庫表,但在 XML 中引用實體類時需要使用全限定名


分頁插件配置類

import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class MyBatisPlusConfig {/*** 分頁插件* 注:3.5.9版本,MyBatis-Plus 對分頁插件做了拆分,需要單獨引用mybatis-plus-jsqlparser依賴以支持PaginationInnerInterceptor類*/@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();interceptor.addInnerInterceptor(new PaginationInnerInterceptor());return interceptor;}
}

注解配置

  • @MapperScan:用于掃描 Mapper 接口,并將這些接口注冊為 Spring 容器中的 Bean

    • 注解位置:通常放在 Spring Boot 應用的主類上,或者放在配置類上

    • 支持通配符:支持使用通配符 * 來匹配一級包路徑,如果需要匹配多級包路徑,可以使用 ** 來代替

    • 屬性

      • value 或 basePackages:指定需要掃描的包路徑??梢允且粋€或多個包路徑,用逗號分隔。

      • markerInterface:指定一個標記接口,只有實現(xiàn)了該接口的 Mapper 接口才會被掃描。

        這個參數(shù)可以用于更細粒度地控制掃描范圍。

      • sqlSessionFactoryRef:指定 SQL 會話工廠的引用名稱。

      • 這個參數(shù)通常用于多數(shù)據(jù)源配置時,指定不同數(shù)據(jù)源對應的 SQL 會話工廠。

    • 注意

      • 包路徑的正確性:在使用 @MapperScan 注解時,需要確保指定的包路徑是正確的,并且包含了所有需要掃描的 Mapper 接口。
      • 避免重復掃描:如果項目中已經(jīng)通過其他方式(如 @Mapper 注解)將 Mapper 接口注冊為 Bean,那么在使用 @MapperScan 注解時,需要避免重復掃描這些接口,否則可能會導致 Bean 沖突或性能問題。
      • 多數(shù)據(jù)源配置:在配置多數(shù)據(jù)源時,需要注意 sqlSessionFactoryRef 參數(shù)的使用,以確保不同數(shù)據(jù)源對應的 Mapper 接口能夠正確注冊和使用。
  • @TableName:指定實體類對應的數(shù)據(jù)庫表名

    • 說明:如果實體類的名稱與數(shù)據(jù)庫表名在命名上保持一致(即遵循駝峰轉(zhuǎn)下劃線的命名規(guī)則),則此注解不是必需的。但如果命名不一致,則需要使用此注解來明確指定表名。

    • 示例:

      @TableName("user")
      public class User {// 實體類屬性
      }
      
  • @TableId:指定實體類中的主鍵字段

    • 說明:如果實體類中有一個名為 id 的字段,并且希望它作為主鍵,則此注解不是必需的,因為 MyBatis-Plus 默認會將名為id的字段作為主鍵。但如果主鍵字段的名稱不是 id,或者需要指定主鍵的生成策略(如自增、UUID等),則需要使用此注解。

    • 屬性

      • value:字段名。
      • type:主鍵類型??蛇x值有 IdType.AUTO(自增)、IdType.NONE(無主鍵)、IdType.ASSIGN_ID(全局唯一ID)、IdType.ASSIGN_UUID(全局唯一UUID)等。
    • 示例:

      @TableId(value = "id", type = IdType.AUTO)
      private Long id;
      
  • @TableField:指定實體類中的普通字段與數(shù)據(jù)庫表字段之間的映射關(guān)系

    • 說明:如果實體類的字段名與數(shù)據(jù)庫表的字段名在命名上保持一致(即遵循駝峰轉(zhuǎn)下劃線的命名規(guī)則),則此注解不是必需的。但如果字段名不一致,或者字段名與數(shù)據(jù)庫的關(guān)鍵字沖突,或者需要處理成員變量以 is 開頭且是布爾值的情況,則需要使用此注解。

    • 屬性

      • value:字段名。

      • exist:字段是否存在,默認為 true

        如果實體類中有一些字段不需要映射到數(shù)據(jù)庫表中,則可以設(shè)置為 false

      • fill:字段填充策略,可選值有 FieldFill.INSERT(插入時填充)、FieldFill.UPDATE(更新時填充)等。

    • 示例:

      @TableField(value = "name", fill = FieldFill.INSERT)
      private String name;
      
  • @TableLogic:指定邏輯刪除字段

    • 屬性

      • value:字段名。
      • delval:刪除標記值。
      • undelval:未刪除標記值。
    • 示例:

      @TableLogic(value = "0", delval = "1")
      private Integer deleted;
      
    • 是否必需:如果需要使用邏輯刪除功能,則必須使用此注解。

  • @Version:指定樂觀鎖字段

    • 示例:

      @Version
      private Integer version;
      
    • 是否必需:如果需要使用樂觀鎖功能,則必須使用此注解。

    @KeySequence:指定 Oracle 數(shù)據(jù)庫的序列

    • 屬性

      • value:序列名。
    • 示例:

      @TableId(type = IdType.SEQUENCE, value = "user_seq")
      private Long id;
      
    • 是否必需:如果使用 Oracle 數(shù)據(jù)庫的序列生成主鍵,則必須使用此注解。

    @Transient:指定不持久化的字段

    • 示例:

      @Transient
      private String tempField;
      
    • 是否必需:如果實體類中有一些臨時字段不需要持久化到數(shù)據(jù)庫,則可以使用此注解。


快速入門

maven 依賴

<!-- MyBatis-plus啟動器 -->
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.9</version><exclusions><exclusion><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId></exclusion></exclusions>
</dependency>
<!--引入較新的mybatis-spring,支持springboot3-->
<dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>3.0.3</version>
</dependency>
<!--3.5.9版本,MyBatis-Plus 對分頁插件做了拆分,需要單獨引用依賴。jdk8引入mybatis-plus-jsqlparser-4.9 -->
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-jsqlparser</artifactId><version>3.5.9</version>
</dependency><!-- MyBatis-plus-generator 代碼生成器 -->
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.5.9</version>
</dependency>
<dependency><groupId>org.apache.velocity</groupId><artifactId>velocity-engine-core</artifactId><version>2.3</version>
</dependency>

編寫配置文件

application.yml

spring:application:name: plus-testdatasource:driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql:///mytest?characterEncoding=UTF-8username: rootpassword: 123456type: com.alibaba.druid.pool.DruidDataSource# myBatis-plus
mybatis-plus:# 指定MyBatis-Plus映射文件的位置mapper-locations: classpath*:mapper/*.xml# 指定實體類的包路徑,自動掃描并注冊別名type-aliases-package: com.example.entityconfiguration:# 設(shè)置MyBatis-Plus的日志輸出。日志實現(xiàn)類,org...logging.stdout.StdOutImpl (控制臺輸出)或其他日志實現(xiàn)類log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

編寫啟動類

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
@MapperScan("com.example.**.mapper")
public class SpringBootRunner {public static void main(String[] args) {SpringApplication.run(SpringBootRunner.class,args);}
}

編寫 MybatisPlus 配置類

import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class MyBatisPlusConfig {/*** 分頁插件* 注:3.5.9版本,MyBatis-Plus 對分頁插件做了拆分,需要單獨引用mybatis-plus-jsqlparser依賴以支持PaginationInnerInterceptor類*/@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();interceptor.addInnerInterceptor(new PaginationInnerInterceptor());return interceptor;}
}

代碼生成器:MybatisPlusGenerator

maven依賴

<!-- MyBatis-plus-generator 代碼生成器 -->
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>${mybatis-plus.version}</version>
</dependency>
<dependency><groupId>org.apache.velocity</groupId><artifactId>velocity-engine-core</artifactId><version>2.3</version>
</dependency>

代碼生成器核心類

示例是將代碼生成器集成到 Spring 環(huán)境中,部分配置參數(shù)放到了配置文件中。

  • 核心類

    import com.baomidou.mybatisplus.annotation.IdType;
    import com.baomidou.mybatisplus.generator.FastAutoGenerator;
    import com.baomidou.mybatisplus.generator.config.OutputFile;
    import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
    import jakarta.annotation.PostConstruct;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
    import org.springframework.stereotype.Component;import java.util.Arrays;
    import java.util.Collections;/*** MyBatis-Plus代碼生成器*/
    @Component
    public class MybatisPlusGeneratorRunner {@Autowiredprivate DataSourceProperties dbProp;@Autowiredprivate MybatisPlusGeneratorProperties generatorProp;@PostConstructpublic void run() {execute();}private void execute() {FastAutoGenerator// 數(shù)據(jù)庫配置.create(dbProp.getUrl(), dbProp.getUsername(), dbProp.getPassword())// 全局配置.globalConfig((builder) -> {// 設(shè)置注釋信息-作者builder.author(generatorProp.getAuthor());// 設(shè)置swagger注解//builder.enableSwagger();// 設(shè)置代碼生成的路徑builder.outputDir(generatorProp.getOutputDirRoot() + "/src/main/java");// 完成后不打開文件夾builder.disableOpenDir();// 不生成service接口,但是依然會生成serviceImpl//builder.disableServiceInterface();})// 包配置.packageConfig((builder) -> {// 設(shè)置父包路徑builder.parent(generatorProp.getPackagePath());//設(shè)置xml文件路徑builder.pathInfo(Collections.singletonMap(OutputFile.xml,generatorProp.getOutputDirRoot() + "/src/main/resources/mapper"));// 設(shè)置實體類包名builder.entity(generatorProp.getPackageEntity());// 設(shè)置Mapper接口包名//builder.mapper("mapper");// 設(shè)置Service接口包名//builder.service("service");// 設(shè)置Service實現(xiàn)類包名//builder.serviceImpl("service.impl");})// 策略配置.strategyConfig((builder) -> {// 指定表builder.addInclude("all".equals(generatorProp.getDbTables()) ?Collections.emptyList() : Arrays.asList(generatorProp.getDbTables().split(",")));// controller的策略配置builder.controllerBuilder()// 啟用rest風格.enableRestStyle()// 開啟駝峰轉(zhuǎn)連字符.enableHyphenStyle()// 禁用生成.disable()// 覆蓋已有文件//.enableFileOverride().build();// service的策略配置builder.serviceBuilder()// 格式化service接口文件名稱.formatServiceFileName("%sService")// 格式化service實現(xiàn)類文件名稱.formatServiceImplFileName("%sServiceImp")// 禁用生成.disable()// 覆蓋已有文件//.enableFileOverride().build();// entity的策略配置builder.entityBuilder()// 啟用Lombok插件.enableLombok()// 啟用表字段注解.enableTableFieldAnnotation()// 版本字段名稱.versionColumnName(generatorProp.getVersionColumnName())// 邏輯刪除字段名稱.logicDeleteColumnName(generatorProp.getLogicDeleteColumnName())// 設(shè)置字段名的命名策略為下劃線轉(zhuǎn)駝峰命名.columnNaming(NamingStrategy.underline_to_camel)// 主鍵策略遞增.idType(IdType.ASSIGN_UUID)// 格式化實體類名稱.formatFileName("%sEntity")// 覆蓋已有文件//.enableFileOverride().build();// mapper的策略配置builder.mapperBuilder().enableBaseColumnList().enableBaseResultMap();}).execute();}
    }
    
  • 配置類

    import lombok.Data;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.cloud.context.config.annotation.RefreshScope;
    import org.springframework.stereotype.Component;@Data
    @Component
    @RefreshScope
    @ConfigurationProperties(prefix = "mybatis-plus.generator")
    public class MybatisPlusGeneratorProperties {// 作者private String author = "blackcrow";// 代碼生成的模塊路徑,例如:D:\IdeaProjects\open_multielement\userprivate String outputDirRoot;// 父包路徑,例如:com.example.userprivate String packagePath;// 實體類包名,例如:entityprivate String packageEntity = "entity";// 表名,多個英文逗號分隔,所有輸入 allprivate String dbTables;// 版本字段名稱private String versionColumnName = "version";// 邏輯刪除字段名稱private String logicDeleteColumnName = "is_delete";
    }
    
http://www.risenshineclean.com/news/46391.html

相關(guān)文章:

  • 正版香港免費資料手機網(wǎng)站大全網(wǎng)絡營銷怎么做
  • 做360手機網(wǎng)站優(yōu)化快女教師遭網(wǎng)課入侵視頻大全集
  • 搭建網(wǎng)站 軟件seo排名優(yōu)化軟件價格
  • 北京網(wǎng)站建設(shè)東軒seo蘇州百度推廣開戶
  • 做網(wǎng)站除了域名還需要什么網(wǎng)絡網(wǎng)站推廣
  • 企業(yè)三合一建站公司怎么找免費seo排名優(yōu)化
  • 國外做ppt的網(wǎng)站百度開放云平臺
  • 申請域名后怎么做網(wǎng)站重慶森林經(jīng)典臺詞 鳳梨罐頭
  • wordpress 與公眾平臺廊坊關(guān)鍵詞優(yōu)化報價
  • 建站模板怎么選近期國際熱點大事件
  • vs2010網(wǎng)站開發(fā) SQL武漢seo關(guān)鍵詞排名
  • 云南房產(chǎn)網(wǎng)站建設(shè)自媒體平臺哪個收益高
  • 網(wǎng)站搭建與網(wǎng)站建設(shè)論文收錄網(wǎng)站排名
  • 建設(shè)主管部門門戶網(wǎng)站鄭州網(wǎng)站排名優(yōu)化公司
  • 網(wǎng)站服務器一個多少錢知名品牌營銷策略
  • 內(nèi)涵吧網(wǎng)站西安百度推廣運營
  • 中國企業(yè)500強排名一覽表seo技術(shù)平臺
  • 企業(yè)門戶網(wǎng)站制作一網(wǎng)信息一個簡單便捷的新聞網(wǎng)站
  • 上海 網(wǎng)站平臺開發(fā)互聯(lián)網(wǎng)營銷師考試題及答案
  • wordpress數(shù)據(jù)庫沒有填寫培訓行業(yè)seo整站優(yōu)化
  • 長安網(wǎng)站建設(shè)軟件開發(fā)北京seo關(guān)鍵詞排名優(yōu)化
  • 網(wǎng)站充值平臺怎么做的推廣平臺下載
  • 網(wǎng)站建設(shè)智能優(yōu)化seo軟件推廣哪個好
  • 詳情頁通用模板北京百度seo
  • 東莞市建設(shè)安監(jiān)局網(wǎng)站互動營銷案例100
  • h5用什么網(wǎng)站來做推廣怎么推
  • 泛解析對網(wǎng)站的影響廈門網(wǎng)站推廣優(yōu)化哪家好
  • 寧波易通寧波網(wǎng)站建設(shè)優(yōu)化落實新十條措施
  • 專門教做甜品的網(wǎng)站微信營銷軟件手機版
  • 建設(shè)網(wǎng)站如何贏利企業(yè)網(wǎng)站cms