Mybatis-Plus來學習一下!程式碼生成、分頁外掛?
在這裡小小推薦下我的個人部落格
簡書:雷園的簡書
今天我們來說一下Mybatis-Plus!
個人認為呢,Mybatis-Plus是Mybatis的增強版,他只是在Mybatis的基礎上增加了功能,且並未對原有功能進行任何的改動。可謂是非常良心的一款開源產品,今天我就來給大家簡單的說一下以下幾個功能,以及程式碼實現。
開始前的準備
1.我們需要建立一個springboot專案,當然mybatis-plus並不僅限於springboot專案,其他專案也可以正常使用。新增如下依賴:
<!-- velocity 模板引擎, 預設 -->
<dependency >
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.0</version>
</dependency>
<!-- freemarker 模板引擎 -->
<dependency>
<groupId> org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.28</version>
</dependency>
<!-- lombok外掛 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId >lombok</artifactId>
<version>1.18.4</version>
</dependency>
<!-- mybatis-plus-boot-starter -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.0.5</version>
</dependency>
<!-- druid 阿里巴巴資料來源 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.10</version>
</dependency>
2.我們可以在IDEA中新增如下兩個外掛方便我們後續開發!lombok以及MybatisX。進入File -> Settings -> Plugins -> Browse Repositories,然後分別搜尋即可新增。
新增lombok外掛以及依賴後,我們的實體類可以這樣寫:
package com.leiyuan.entity;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* <p>
* </p>
* @author 來自底層程式設計師的仰望
* @since 2018-11-14
*/
@Data
public class User{
private static final long serialVersionUID = 1L;
private Integer id;
private String name;
private String email;
private String phone;
private String password;
private Integer age;
private String sex;
private Integer state;
}
在新增**@Data**註解後呢我們可以省略所有封裝方法,這樣即使我們頻繁的改動屬性的型別或者名稱,都無需重新生成封裝方法。為我們節省了大量的時間。是不是很方便呢!
而MybatisX呢是用於Java 與 XML 調回跳轉、Mapper 方法自動生成 XML 。以前我們在寫mapper的時候呢,都是在mapper.java中定義好方法,然後手動跳轉到mapper.xml中去寫sql。那麼在使用了MybatisX之後呢,我們在編寫mapper.java的時候呢,在左側可以看到Mybatis的小鳥標誌。點選就可以進入到對應的方法中,也可以使用control+滑鼠左鍵進行跳轉了。並且它會像介面與實現類的關係,自動為你生成程式碼,非常方便。
程式碼生成
編寫如下測試類或者main方法,並執行就可以了:
public static void main(String[] args) {
// 程式碼生成器
AutoGenerator mpg = new AutoGenerator();
// 全域性配置
GlobalConfig gc = new GlobalConfig();
String projectPath = System.getProperty("user.dir");
gc.setOutputDir(projectPath + "/src/main/java");
gc.setAuthor("來自底層程式設計師的仰望");
gc.setOpen(false);
mpg.setGlobalConfig(gc);
// 資料來源配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl("jdbc:mysql://yourHost:3306/test?useUnicode=true&useSSL=false&characterEncoding=utf8");
dsc.setSchemaName("public");
dsc.setDriverName("com.mysql.jdbc.Driver");
dsc.setUsername("yourUsername");
dsc.setPassword("yourPassword");
mpg.setDataSource(dsc);
// 包配置
PackageConfig pc = new PackageConfig();
pc.setParent("yourPackageName");
mpg.setPackageInfo(pc);
// 自定義配置
InjectionConfig cfg = new InjectionConfig() {
@Override
public void initMap() {
// to do nothing
}
};
List<FileOutConfig> focList = new ArrayList<>();
focList.add(new FileOutConfig("/templates/mapper.xml.ftl") {
@Override
public String outputFile(TableInfo tableInfo) {
// 自定義輸入檔名稱
return projectPath + "/src/main/resources/mapper/" + tableInfo.getEntityName() + "Mapper" +
StringPool.DOT_XML;
}
});
cfg.setFileOutConfigList(focList);
mpg.setCfg(cfg);
mpg.setTemplate(new TemplateConfig().setXml(null));
// 策略配置
StrategyConfig strategy = new StrategyConfig();
strategy.setNaming(NamingStrategy.underline_to_camel);
strategy.setColumnNaming(NamingStrategy.underline_to_camel);
// 是否啟用lombok
strategy.setEntityLombokModel(true);
strategy.setRestControllerStyle(true);
// 需要自動生成的表名
strategy.setInclude("user","center");
strategy.setControllerMappingHyphenStyle(true);
strategy.setTablePrefix(pc.getModuleName() + "_");
mpg.setStrategy(strategy);
mpg.setTemplateEngine(new FreemarkerTemplateEngine());
mpg.execute();
}
原始碼在官網可以找到,直接複製貼上,改一下包名、表名就可以了,是不是非常簡單呢,專案結構如下圖
自動分頁
1.首先配置分頁外掛,編寫配置類PageConfig.java
package com.config;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;
//Spring boot方式
@EnableTransactionManagement
@Configuration
@MapperScan("com.leiyuan.mapper*")
public class PageConfig {
/**
* 分頁外掛
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
}
2.在mapper.java中編寫如下介面
// 導包如下:
// import com.baomidou.mybatisplus.core.metadata.IPage;
// import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
IPage<User> queryAll(Page page);
3.在mapper.xml中實現普通的查詢語句即可,這裡以全查為例
<select id="queryAll" resultType="com.entity.User">
select * from user
</select>
4.編寫test類進行測試,在這裡我們就省略service層的程式碼了。
@RunWith(SpringRunner.class)
@SpringBootTest
public class TestMybatisPlusApplicationTests {
@Autowired
private UserMapper userMapper;
@Test
public void contextLoads() {
Page<User> userPage = new Page<>();
// 當前頁
userPage.setCurrent(2);
// 每頁數量
userPage.setSize(2);
System.out.println(userMapper.queryAll(userPage).getRecords().toString());
}
}
5.如上便是分頁的程式碼啦,與前臺的互動,相信大家沒有問題的,這裡就不再贅述了。
結束語
非常感謝大家的關注,文章有任何問題,大家都可以私信或者評論告訴我,小弟不才只能淺顯的說一些應用的方式方法,底層的東西還要大家自己深入的研究!技術永無止境,各位努力!!!