欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot整合mybatisplus和druid的示例詳解

 更新時間:2023年08月24日 09:34:26   作者:fking86  
這篇文章主要介紹了SpringBoot整合mybatisplus和druid的方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

版本介紹

jdk 17

SpringBoot 3.1.0

druid-spring-boot-starter 1.2.4

mysql-connector 8.0.33

mybatis-plus 3.5.3.1

環(huán)境準備

導(dǎo)入依賴

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.1.0</version>
</parent>
<properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <druid.version>1.2.4</druid.version>
        <mysql.version>8.0.33</mysql.version>
        <lombok.version>1.18.26</lombok.version>
        <swagger.version>1.5.22</swagger.version>
        <mybatis-plus.version>3.5.3.1</mybatis-plus.version>
</properties>
<!-- Web 相關(guān) -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>${druid.version}</version>
        </dependency>
        <!-- mysql -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql.version}</version>
        </dependency>
        <!-- mybatis-plus -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>${mybatis-plus.version}</version>
        </dependency>
        <!-- lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>${lombok.version}</version>
            <scope>compile</scope>
        </dependency>
        <!-- swagger -->
        <dependency>
            <groupId>io.swagger</groupId>
            <artifactId>swagger-annotations</artifactId>
            <version>${swagger.version}</version>
            <scope>compile</scope>
        </dependency>

application.yml配置

server:
  port: 8080
spring:
  datasource:
    # 使用druid數(shù)據(jù)源
    type: com.alibaba.druid.pool.DruidDataSource
    url: jdbc:mysql://localhost:3306/springboot-exp?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&AllowPublicKeyRetrieval=True
    username: root
    password: 123456
    # 數(shù)據(jù)源連接池配置
    druid:
      #   數(shù)據(jù)源其他配置
      initialSize: 5
      minIdle: 5
      maxActive: 20
      maxWait: 60000
      timeBetweenEvictionRunsMillis: 60000
      minEvictableIdleTimeMillis: 300000
      validationQuery: SELECT 1 FROM DUAL
      testWhileIdle: true
      testOnBorrow: false
      testOnReturn: false
      poolPreparedStatements: true
      maxPoolPreparedStatementPerConnectionSize: 20
      useGlobalDataSourceStat: true
      connectionProperties: druid.stat.mergeSql=true;druid.stat.logSlowSql=true;druid.stat.slowSqlMillis=1000;
      # 配置監(jiān)控統(tǒng)計攔截的filters,去掉后監(jiān)控界面sql無法統(tǒng)計,'wall'用于防火墻
      filters: stat,wall,slf4j
mybatis-plus:
  mapper-locations: classpath*:/mapper/**/*.xml # xml路徑
  global-config:
    db-config:
      id-type: ASSIGN_ID # 全局默認主鍵策略,默認為雪花ID,若表中設(shè)置了自增,則生成的實體自動添加自增ID屬性,參考 TestDelete
      logic-delete-field: deleted # 全局邏輯刪除的實體字段名,若不配置,則不啟用
      logic-delete-value: 1 # 邏輯已刪除值(默認為 1)
      logic-not-delete-value: 0 # 邏輯未刪除值(默認為 0)
  configuration:
    map-underscore-to-camel-case: true # 駝峰轉(zhuǎn)下劃線(默認)
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 日志輸出
  type-aliases-package: com.example.domain.entity

數(shù)據(jù)庫表

-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`  (
  `id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `user_name` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用戶名字',
  `password` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用戶密碼',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

使用

MybatisPlusConfig

@Configuration
public class MybatisPlusConfig {
    @Bean
    public MybatisPlusInterceptor paginationInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        // 添加分頁插件
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        // 添加 攻擊 SQL 阻斷解析器,防止全表更新與刪除
        interceptor.addInnerInterceptor(new BlockAttackInnerInterceptor());
        // 添加 樂觀鎖 插件
        interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
        return interceptor;
    }
}

User

@TableName(value = "user", autoResultMap = true)
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class User implements Serializable {
    private static final long serialVersionUID = -4328989516223829865L;
    /**
     * 用戶ID
     */
    @TableId
    private String id;
    /**
     * 用戶賬號
     */
    private String userName;
    /**
     * 密碼
     */
    private String password;
}

UserMapper

@Mapper
public interface UserMapper extends BaseMapper<User> {}

UserService

public interface UserService {
    void save(User user);
    User getById(String id);
    void removeById(String id);
    void update(UserUpdateReqVO reqVO);
}

UserBaseVO

@ApiModel("Request VO")
@Data
@ToString(callSuper = true)
public class UserBaseVO {
    @ApiModelProperty(value = "用戶名字", required = true)
    @NotNull(message = "用戶名字不能為空")
    private String username;
    @ApiModelProperty(value = "用戶密碼", required = true)
    @NotNull(message = "用戶密碼不能為空")
    private String password;
}

UserUpdateReqVO

@ApiModel("用戶更新 Request VO")
@Data
@ToString(callSuper = true)
public class UserUpdateReqVO extends UserBaseVO {
    @ApiModelProperty(value = "", required = true)
    @NotNull(message = "id不能為空")
    private String id;
}

UserCreateReqVO

@ApiModel("用戶更新 Request VO")
@Data
@ToString(callSuper = true)
public class UserCreateReqVO extends UserBaseVO {
}

MyBatisDemoController

@RestController
@RequestMapping("/user")
@Slf4j
public class MyBatisDemoController {
    @Autowired
    private UserService userService;
    /**
     * 添加一個新用戶
     *
     * @return java.lang.Object
     */
    @GetMapping("/add")
    public Object add(UserCreateReqVO reqVO) {
        User user = User.builder().id(UUID.randomUUID().toString()).password(reqVO.getPassword()).userName(reqVO.getUsername()).build();
        userService.save(user);
        return "add";
    }
    /**
     * 更新用戶
     *
     * @return java.lang.Object
     */
    @GetMapping("/update")
    public Object update(@RequestBody UserUpdateReqVO reqVO) {
        User user = userService.getById(reqVO.getId());
        if(null != user){
            userService.update(reqVO);
            return "update success";
        }
        return "update error";
    }
    /**
     * 通過id獲取用戶
     *
     * @param id
     * @return java.lang.Object
     */
    @GetMapping("/{id}")
    public Object get(@PathVariable String id) {
        return userService.getById(id);
    }
    /**
     * 通過id刪除用戶
     *
     * @param id
     * @return java.lang.Object
     */
    @GetMapping("/del/{id}")
    public Object del(@PathVariable String id) {
        userService.removeById(id);
        return "del";
    }
}

代碼生成工具

導(dǎo)入依賴

<dependency>
    <groupId>org.apache.velocity</groupId>
    <artifactId>velocity-engine-core</artifactId>
    <version>2.0</version>
</dependency>
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>3.4.0</version>
</dependency>

GeneratorUtils

public class GeneratorUtils {
        public static void main(String[] args) {
        autoGenerator();
        }
        public static void autoGenerator() {
        AutoGenerator autoGenerator = new AutoGenerator();
        autoGenerator.setDataSource(getDataSourceConfig());
        autoGenerator.setGlobalConfig(getGlobalConfig());
        autoGenerator.setPackageInfo(getPackageInfo());
        autoGenerator.setStrategy(getStrategyConfig());
        autoGenerator.execute();
        }
        /**
        * 設(shè)置數(shù)據(jù)源
        * @return
        */
        public static DataSourceConfig getDataSourceConfig(){
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setUrl("jdbc:mysql://47.98.123.147:3306/springboot-exp?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&AllowPublicKeyRetrieval=True");
        dsc.setSchemaName("public");
        dsc.setDriverName("com.mysql.cj.jdbc.Driver");
        dsc.setUsername("springboot-exp");
        dsc.setPassword("HJRNEhKPS8MPapB8");
        dsc.setDbType(DbType.MYSQL);
        return dsc;
        }
        /**
        * 設(shè)置全局配置
        * @return
        */
        public static GlobalConfig getGlobalConfig(){
        GlobalConfig gc = new GlobalConfig();
        String path = System.getProperty("user.dir");
        gc.setOutputDir(path+"/springboot-mybatisplus-druid/src/main/java");//參數(shù)是一個目錄,所以需要獲取當前系統(tǒng)目錄
        gc.setAuthor("coderjim");
        gc.setOpen(true);//是否打開資源管理器
        gc.setFileOverride(true);//是否覆蓋已經(jīng)生成的
        gc.setServiceName("%sService");//去service的I前綴
        gc.setIdType(IdType.INPUT);// id生成策略
        gc.setDateType(DateType.ONLY_DATE);
        return gc;
        }
        /**
        *包配置
        * @return
        */
        public static PackageConfig getPackageInfo(){
        PackageConfig pc = new PackageConfig();
        pc.setModuleName("common");
        pc.setParent("com.example");
        pc.setEntity("entity");
        pc.setMapper("mapper");
        pc.setService("service");
        pc.setController("controller");
        return pc;
        }
        /**
        * 策略配置
        * @return
        */
        public static StrategyConfig getStrategyConfig(){
        StrategyConfig strategy = new StrategyConfig();
        strategy.setNaming(NamingStrategy.underline_to_camel);// 下劃線轉(zhuǎn)駝峰命名
        strategy.setColumnNaming(NamingStrategy.underline_to_camel);
        // 設(shè)置映射的表名,多張表
        strategy.setInclude("user");
        strategy.setEntityLombokModel(true);// 是否啟用lombok開啟注解
        strategy.setLogicDeleteFieldName("isAction");//設(shè)置邏輯刪除字段
        // 時間自動填充配置
        TableFill startDate = new TableFill("startDate", FieldFill.INSERT);
        TableFill updateDate = new TableFill("updateDate", FieldFill.UPDATE);
        ArrayList<TableFill> list = new ArrayList<>();
        list.add(startDate);
        list.add(updateDate);
        strategy.setTableFillList(list);
        // 樂觀鎖配置
        strategy.setVersionFieldName("version");
        // rustful 格式
        strategy.setRestControllerStyle(true);
        return  strategy;
        }
}

以上就是SpringBoot整合mybatisplus和druid的示例詳解的詳細內(nèi)容,更多關(guān)于SpringBoot整合mybatisplus和druid的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java多線程中的死鎖詳解

    Java多線程中的死鎖詳解

    這篇文章主要介紹了Java多線程中的死鎖詳解,死鎖是指兩個或多個線程在執(zhí)行過程中,因爭奪資源而造成的一種互相等待的現(xiàn)象,如果不提前預(yù)防或外界干擾,這些線程將無法執(zhí)行下去,需要的朋友可以參考下
    2023-08-08
  • Java多線程環(huán)境下死鎖模擬

    Java多線程環(huán)境下死鎖模擬

    這篇文章主要介紹了模擬Java多線程環(huán)境下的死鎖,文章介紹一些死鎖的產(chǎn)生條件的相關(guān)資料,具有一定的參考價值,需要的小伙伴可以參考一下,希望對你有所幫助
    2021-12-12
  • Dynamic+Mybatis-plus動態(tài)數(shù)據(jù)源的實踐指南

    Dynamic+Mybatis-plus動態(tài)數(shù)據(jù)源的實踐指南

    本文介紹MyBatis-Plus動態(tài)數(shù)據(jù)源集成,適用于微服務(wù)架構(gòu),實現(xiàn)運行時多數(shù)據(jù)源切換,提升靈活性與數(shù)據(jù)處理效率,配置包括依賴引入、YML設(shè)置、Druid連接、上下文管理、注解切換及AOP處理,并需排除默認自動配置,感興趣的朋友一起看看吧
    2025-09-09
  • Mybatis使用命令生成逆向工程的方法

    Mybatis使用命令生成逆向工程的方法

    這篇文章主要介紹了Mybatis使用命令生成逆向工程的方法,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • Spring+SpringMVC+MyBatis整合實戰(zhàn)(SSM框架)

    Spring+SpringMVC+MyBatis整合實戰(zhàn)(SSM框架)

    框架整合難不難?難!東西多,配置文件復(fù)雜不好記憶,本文就來介紹一下Spring+SpringMVC+MyBatis整合實戰(zhàn),具有一定的參考價值,感興趣的可以了解一下
    2021-08-08
  • 教你使用springboot配置多數(shù)據(jù)源

    教你使用springboot配置多數(shù)據(jù)源

    發(fā)現(xiàn)有很多小伙伴還不會用springboot配置多數(shù)據(jù)源,今天特地給大家整理了本篇文章,文中有非常詳細的圖文介紹及代碼示例,對正在學(xué)習(xí)java的小伙伴很有幫助,需要的朋友可以參考下
    2021-05-05
  • SpringBoot實現(xiàn)RAS+AES自動接口解密

    SpringBoot實現(xiàn)RAS+AES自動接口解密

    本文主要介紹了SpringBoot實現(xiàn)RAS+AES自動接口解密,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • Spring Boot接口設(shè)計防篡改、防重放攻擊詳解

    Spring Boot接口設(shè)計防篡改、防重放攻擊詳解

    這篇文章主要給大家介紹了關(guān)于Spring Boot接口設(shè)計防篡改、防重放攻擊的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用Spring Boot具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • gRPC在Java中的實現(xiàn)與應(yīng)用詳解

    gRPC在Java中的實現(xiàn)與應(yīng)用詳解

    gRPC是由Google開發(fā)的高性能、開源的通用遠程過程調(diào)用(RPC)框架,本文將詳細介紹如何在Java中使用gRPC,包括服務(wù)定義、服務(wù)器端實現(xiàn)、客戶端調(diào)用以及一些高級特性,我們將通過代碼示例來幫助理解gRPC的工作原理,需要的朋友可以參考下
    2024-06-06
  • Java SpringMVC實現(xiàn)國際化整合案例分析(i18n)

    Java SpringMVC實現(xiàn)國際化整合案例分析(i18n)

    本篇文章主要介紹了Java SpringMVC實現(xiàn)國際化整合案例分析(i18n),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05

最新評論