溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Mybatis Plus的基礎使用方法

發(fā)布時間:2021-06-25 10:21:35 來源:億速云 閱讀:156 作者:chen 欄目:大數(shù)據(jù)

這篇文章主要介紹“Mybatis Plus的基礎使用方法”,在日常操作中,相信很多人在Mybatis Plus的基礎使用方法問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Mybatis Plus的基礎使用方法”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

Mybatis-Plus 是一款 Mybatis 動態(tài) SQL 自動注入 Mybatis 增刪改查 CRUD 操作中間件, 減少你的開發(fā)周期優(yōu)化動態(tài)維護 XML 實體字段,無入侵全方位 ORM 輔助層讓您擁有更多時間陪家人。

以下內(nèi)容 以Mybatis-Plus 3.0.1版本 為藍本;

詳情見官方文檔:

https://mp.baomidou.com/guide/#%E7%89%B9%E6%80%A7 

springboot2.0 集成 mybatis-plus

  1. pom引入所需jar包

    1. <!-- mybatisPlus 核心庫 -->
              <dependency>
                  <groupId>com.baomidou</groupId>
                  <artifactId>mybatis-plus-boot-starter</artifactId>
                  <version>3.1.0</version>
              </dependency>
              <dependency>
                  <groupId>com.baomidou</groupId>
                  <artifactId>mybatis-plus-extension</artifactId>
                  <version>3.1.0</version>
              </dependency>
              <!-- mybatis 代碼自動生成器 -->
              <dependency>
                  <groupId>com.baomidou</groupId>
                  <artifactId>mybatis-plus-generator</artifactId>
                  <version>3.1.0</version>
              </dependency>
              <!--mybatis-plus完成項目構(gòu)建所需模板,真實項目不需要使用-->
              <dependency>
                  <groupId>org.freemarker</groupId>
                  <artifactId>freemarker</artifactId>
              </dependency>


       

  2. 配置自動生成工具類

    1. package org.xx.xx.db.util;
      
      import com.baomidou.mybatisplus.core.toolkit.StringPool;
      import com.baomidou.mybatisplus.generator.AutoGenerator;
      import com.baomidou.mybatisplus.generator.InjectionConfig;
      import com.baomidou.mybatisplus.generator.config.*;
      import com.baomidou.mybatisplus.generator.config.po.TableInfo;
      import com.baomidou.mybatisplus.generator.config.rules.DateType;
      import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
      import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
      
      import java.util.ArrayList;
      import java.util.List;
      
      /**
       * @Description:
       * @Auther: wuxw
       * @Date: 2019/9/30 14:27
       */
      public class CodeGeneratorUtil {
      
          public static void main(String[] args) {
              //代碼生成器
              AutoGenerator mpg = new AutoGenerator();
      
              //全局配置
              GlobalConfig gc = new GlobalConfig();
              String projectPath = System.getProperty("user.dir") + "/litemall-db/";
              gc.setOutputDir(projectPath + "/src/main/java");
              gc.setAuthor("wuxw");
              gc.setServiceName("%sService");//自定義Service接口生成的文件名
              gc.setOpen(false);
              gc.setBaseResultMap(true);
              gc.setDateType(DateType.ONLY_DATE);
              mpg.setGlobalConfig(gc);
      
              //數(shù)據(jù)源配置
              DataSourceConfig dsc = new DataSourceConfig();
              dsc.setUrl("jdbc:mysql://127.0.0.1:3306/litemall?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8");
              dsc.setDriverName("com.mysql.cj.jdbc.Driver");
              dsc.setUsername("root");
              dsc.setPassword("123456");
              mpg.setDataSource(dsc);
      
              //包配置
              PackageConfig pc = new PackageConfig();
              pc.setParent("org.xxx.xxx.db")
                      .setMapper("dao");
              mpg.setPackageInfo(pc);
      
              //自定義配置
              InjectionConfig cfg = new InjectionConfig() {
                  @Override
                  public void initMap() {
                      //to do nothing
                  }
              };
      
              //自定義輸出配置
              List<FileOutConfig> focList = new ArrayList<>();
              //自定義配置會優(yōu)先輸出
              focList.add(new FileOutConfig("/templates/mapper.xml.ftl") {
                  @Override
                  public String outputFile(TableInfo tableInfo) {
                      // 自定義輸出文件名 , 如果你 Entity 設置了前后綴、此處注意 xml 的名稱會跟著發(fā)生變化!!
                      return projectPath + "/src/main/resources/mappers/"
                              + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
                  }
              });
              cfg.setFileOutConfigList(focList);
              mpg.setCfg(cfg);
      
      
              // 配置模板
              TemplateConfig templateConfig = new TemplateConfig();
      
              // 配置自定義輸出模板
              //指定自定義模板路徑,注意不要帶上.ftl/.vm, 會根據(jù)使用的模板引擎自動識別
              // templateConfig.setEntity("templates/entity2.java");
              // templateConfig.setService();
              // templateConfig.setController();
              templateConfig.setXml(null);
              mpg.setTemplate(templateConfig);
      
      
              //配置策略
              StrategyConfig strategy = new StrategyConfig();
              strategy.setNaming(NamingStrategy.underline_to_camel);
              strategy.setColumnNaming(NamingStrategy.underline_to_camel);
              //strategy.setSuperControllerClass("com.example.demo.model.BaseEntity");
              strategy.setEntityLombokModel(false);//默認是false
              //strategy.setRestControllerStyle(true);
              //公共父類
              //strategy.setSuperControllerClass("com.example.demo.controller.BaseController");
              // 寫于父類中的公共字段
              //strategy.setSuperEntityColumns("id");
              strategy.setInclude("tb_forum_replay"); // 僅生成單個表
              strategy.setControllerMappingHyphenStyle(true);
              strategy.setTablePrefix("tb_");
              mpg.setStrategy(strategy);
              mpg.setTemplateEngine(new FreemarkerTemplateEngine());
              mpg.execute();
              System.out.println(" --------------------------自動生成完畢------------------------");
          }
      }


       

  3. 實際開發(fā)

    1. @Api(tags = "論壇主頁")
      @RestController
      @RequestMapping("/admin/forum/")
      @Validated
      public class AdminForumController {
      
      }
      
      
      @Service
      public class ForumServiceImpl extends ServiceImpl<ForumMapper, Forum> implements ForumService {
      
      
      }
      
      
      @Mapper
      public interface ForumMapper extends BaseMapper<Forum> {
      
      
      }
      
      @Data
      @TableName("tb_forum")
      public class Forum implements Serializable {
      
      
      }


       

實際開發(fā)使用

Select

第一種 selectCount

QueryWrapper qw = new QueryWrapper();
qw.eq("user_id",userId);
qw.eq("readed",0);
baseMapper.selectCount(qw);

等同于

select count(*) from tb where use_id = #{userId} and readed =0 

第二種selectOne

QueryWrapper qw = new QueryWrapper();
qw.eq("user_id",userId);
qw.eq("readed",0);
qw.last("limit 1");
baseMapper.selectOne(qw);

等同于

select count(*) from tb where use_id = #{userId} and readed =0 limit 1

update

第一種  set

UpdateWrapper uw = new UpdateWrapper();
uw.eq("user_id",userId);
uw.eq("id",id);
Forum f = new Forum();
f.setDeleted(1);
return forumMapper.update(f,uw) > 0;

等同于

update forum set delete =1 where user_id = #{userId} and id = #{id}

第二種  insql

UpdateWrapper uw = new UpdateWrapper();
String[] idsStr =new String["1","2","3"];
String id =  StringUtils.strip(idsStr.toString(),"[]");
uw.inSql("id",id);
Forum f = new Forum();
f.setDeleted(1);
return forumMapper.update(f,uw) > 0;

等同于

update forum set deleted = 1 where id in ( 1 , 2 ,3)

太太太哪里, 具體還是看官方文檔吧

條件構(gòu)造器

各種sql語義,讓你用mybatisPlus 溜的飛起 

allEq

eq

ne

...

最最最主要的還是

MybatisX 快速開發(fā)插件

  • Java 與 XML 調(diào)回跳轉(zhuǎn)

  • Mapper 方法自動生成 XML

Mybatis Plus的基礎使用方法

到此,關于“Mybatis Plus的基礎使用方法”的學習就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關知識,請繼續(xù)關注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI