在這里小小推薦下我的個人博客
csdn:雷園的csdn博客
個人博客:雷園的個人博客
簡書:雷園的簡書
今天我們來說一下Mybatis-Plus!
個人認(rèn)為呢,Mybatis-Plus是Mybatis的增強版印蓖,他只是在Mybatis的基礎(chǔ)上增加了功能杠氢,且并未對原有功能進行任何的改動×砦椋可謂是非常良心的一款開源產(chǎn)品鼻百,今天我就來給大家簡單的說一下以下幾個功能,以及代碼實現(xiàn)摆尝。
開始前的準(zhǔn)備
1.我們需要創(chuàng)建一個springboot項目温艇,當(dāng)然mybatis-plus并不僅限于springboot項目,其他項目也可以正常使用堕汞。添加如下依賴:
<!-- velocity 模板引擎, 默認(rèn) -->
<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 阿里巴巴數(shù)據(jù)源 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.10</version>
</dependency>
2.我們可以在IDEA中添加如下兩個插件方便我們后續(xù)開發(fā)勺爱!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注解后呢我們可以省略所有封裝方法人灼,這樣即使我們頻繁的改動屬性的類型或者名稱围段,都無需重新生成封裝方法。為我們節(jié)省了大量的時間投放。是不是很方便呢奈泪!
而MybatisX呢是用于Java 與 XML 調(diào)回跳轉(zhuǎn)、Mapper 方法自動生成 XML 灸芳。以前我們在寫mapper的時候呢涝桅,都是在mapper.java中定義好方法,然后手動跳轉(zhuǎn)到mapper.xml中去寫sql烙样。那么在使用了MybatisX之后呢冯遂,我們在編寫mapper.java的時候呢,在左側(cè)可以看到Mybatis的小鳥標(biāo)志谒获。點擊就可以進入到對應(yīng)的方法中蛤肌,也可以使用control+鼠標(biāo)左鍵進行跳轉(zhuǎn)了壁却。并且它會像接口與實現(xiàn)類的關(guān)系,自動為你生成代碼寻定,非常方便。
代碼生成
編寫如下測試類或者main方法,并執(zhí)行就可以了:
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);
// 數(shù)據(jù)源配置
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();
}
源碼在官網(wǎng)可以找到精耐,直接復(fù)制粘貼狼速,改一下包名、表名就可以了卦停,是不是非常簡單呢向胡,項目結(jié)構(gòu)如下圖自動分頁
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中編寫如下接口
// 導(dǎo)包如下:
// import com.baomidou.mybatisplus.core.metadata.IPage;
// import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
IPage<User> queryAll(Page page);
3.在mapper.xml中實現(xiàn)普通的查詢語句即可惊完,這里以全查為例
<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<>();
// 當(dāng)前頁
userPage.setCurrent(2);
// 每頁數(shù)量
userPage.setSize(2);
System.out.println(userMapper.queryAll(userPage).getRecords().toString());
}
}
5.如上便是分頁的代碼啦小槐,與前臺的交互拇派,相信大家沒有問題的,這里就不再贅述了凿跳。
結(jié)束語
非常感謝大家的關(guān)注件豌,文章有任何問題,大家都可以私信或者評論告訴我控嗜,小弟不才只能淺顯的說一些應(yīng)用的方式方法茧彤,底層的東西還要大家自己深入的研究!技術(shù)永無止境疆栏,各位努力T唷!壁顶!