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

SpringBoot整合mybatisplus和druid的示例詳解

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

版本介紹

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)境準備

導入依賴

<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 相關 -->
        <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ù)據源
    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ù)據源連接池配置
    druid:
      #   數(shù)據源其他配置
      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,若表中設置了自增,則生成的實體自動添加自增ID屬性,參考 TestDelete
      logic-delete-field: deleted # 全局邏輯刪除的實體字段名,若不配置,則不啟用
      logic-delete-value: 1 # 邏輯已刪除值(默認為 1)
      logic-not-delete-value: 0 # 邏輯未刪除值(默認為 0)
  configuration:
    map-underscore-to-camel-case: true # 駝峰轉下劃線(默認)
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 日志輸出
  type-aliases-package: com.example.domain.entity

數(shù)據庫表

-- ----------------------------
-- 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";
    }
}

代碼生成工具

導入依賴

<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ù)據源
        * @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;
        }
        /**
        * 設置全局配置
        * @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);//是否覆蓋已經生成的
        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);// 下劃線轉駝峰命名
        strategy.setColumnNaming(NamingStrategy.underline_to_camel);
        // 設置映射的表名,多張表
        strategy.setInclude("user");
        strategy.setEntityLombokModel(true);// 是否啟用lombok開啟注解
        strategy.setLogicDeleteFieldName("isAction");//設置邏輯刪除字段
        // 時間自動填充配置
        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的示例詳解的詳細內容,更多關于SpringBoot整合mybatisplus和druid的資料請關注腳本之家其它相關文章!

相關文章

  • springboot源碼中this::selfInitialize怪異用法的含義解析

    springboot源碼中this::selfInitialize怪異用法的含義解析

    這篇文章主要介紹了springboot源碼中this::selfInitialize怪異用法的含義解析,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03
  • Spring Boot 集成 Kafka的詳細步驟

    Spring Boot 集成 Kafka的詳細步驟

    Spring Boot與Kafka的集成使得消息隊列的使用變得更加簡單和高效,可以配置 Kafka、實現(xiàn)生產者和消費者,并利用 Spring Boot 提供的功能處理消息流,以下是 Spring Boot 集成 Kafka 的詳細步驟,包括配置、生產者和消費者的實現(xiàn)以及一些高級特性,感興趣的朋友一起看看吧
    2024-07-07
  • 線程池之jdk1.8 Executors創(chuàng)建線程池的幾種方式

    線程池之jdk1.8 Executors創(chuàng)建線程池的幾種方式

    這篇文章主要介紹了線程池之jdk1.8 Executors創(chuàng)建線程池的幾種方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • SpringBoot創(chuàng)建線程池的六種方式小結

    SpringBoot創(chuàng)建線程池的六種方式小結

    本文主要介紹了SpringBoot創(chuàng)建線程池的六種方式小結,包括自定義線程池,固定長度線程池,單一線程池,共享線程池,定時線程池,SpringBoot中注入異步線程池,感興趣的可以了解一下
    2023-11-11
  • Lombok和MapStruct整合詳情

    Lombok和MapStruct整合詳情

    這篇文章主要介紹了Lombok和MapStruct整合詳情,文章基于Java的相關資料展開詳細內容,需要的小伙伴可以參考一下
    2022-05-05
  • Java代碼注釋規(guī)范詳解

    Java代碼注釋規(guī)范詳解

    代碼附有注釋對程序開發(fā)者來說非常重要,隨著技術的發(fā)展,在項目開發(fā)過程中,必須要求程序員寫好代碼注釋,這樣有利于代碼后續(xù)的編寫和使用。下面給大家分享java代碼注釋的規(guī)范,需要的朋友參考下
    2016-02-02
  • Jrebel License Server 激活 IDEA-Jrebel-在線-離線-均適用(推薦)

    Jrebel License Server 激活 IDEA-Jrebel-在線-

    這篇文章主要介紹了Jrebel License Server 激活 IDEA-Jrebel-在線-離線-均適用,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • 線程池中使用spring aop事務增強

    線程池中使用spring aop事務增強

    這篇文章主要介紹了線程池中使用spring aop事務增強,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-02-02
  • SpringBoot自動配置源碼深入刨析講解

    SpringBoot自動配置源碼深入刨析講解

    這篇文章主要介紹了SpringBoot自動配置原理分析,SpringBoot是我們經常使用的框架,那么你能不能針對SpringBoot實現(xiàn)自動配置做一個詳細的介紹。如果可以的話,能不能畫一下實現(xiàn)自動配置的流程圖。牽扯到哪些關鍵類,以及哪些關鍵點
    2022-09-09
  • 圖文結合講解Java單例模式

    圖文結合講解Java單例模式

    這篇文章主要以圖文結合的方式為大家詳細介紹了Java單例模式的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10

最新評論