mybatis-plus簡介
MyBatis-Plus(簡稱 MP)是一個 MyBatis 的增強工具,在 MyBatis 的基礎上只做增強不做改變,為簡化開發、提高效率而生。官網:https://mp.baomidou.com/
使用
- 引入pom包文件
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.2.0</version>
</dependency>
<!-- 這是mybatis-plus的代碼自動生成器 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.2.0</version>
</dependency>
<!-- 這是模板引擎依賴 -->
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.28</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.45</version>
<scope>runtime</scope>
</dependency>
這個是lombok,實體類的屬性注解
mybatis-plus的依賴包,注意mybatis-plus的依賴包版本要統一,不然jar引用會沖突,另外freemarker一定要引,根據模板自動生成代碼;
2. 編寫generator自動生成代碼
public static void main(String[] args) {
String author = "hmx";
String outPutDir = "E:/springboot-mybatis-plus/src/main";
String javaStr = "/java";
String resourceStr = "/resources";
AutoGenerator generator = new AutoGenerator();
// 選擇 freemarker 引擎需要指定如下加,注意 pom 依賴必須有!
generator.setTemplateEngine(new FreemarkerTemplateEngine());
GlobalConfig globalConfig = new GlobalConfig();
globalConfig.setAuthor(author);
globalConfig.setDateType(DateType.ONLY_DATE);
globalConfig.setOutputDir(outPutDir+javaStr);
globalConfig.setFileOverride(false);//是否覆蓋同名文件
globalConfig.setActiveRecord(true);//之繼承model就可實現增刪改查
globalConfig.setEnableCache(false);//是否開啟二級緩存
globalConfig.setBaseResultMap(true);
globalConfig.setBaseColumnList(false);
///設置全局參數
generator.setGlobalConfig(globalConfig);
DataSourceConfig dsc = new DataSourceConfig();
dsc.setDbType(DbType.MYSQL);
dsc.setTypeConvert(new MySqlTypeConvert(){
/**
* 自定義數據類型轉換(可選)
* @param globalConfig
* @param fieldType
* @return
*/
@Override
public IColumnType processTypeConvert(GlobalConfig globalConfig, String fieldType) {
return super.processTypeConvert(globalConfig, fieldType);
}
});
dsc.setDriverName("com.mysql.jdbc.Driver");
dsc.setUrl("jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf8");
dsc.setUsername("root");
dsc.setPassword("123");
generator.setDataSource(dsc);
PackageConfig packageConfig = new PackageConfig();
packageConfig.setParent("com.wonders.springbootmybatisplus");
generator.setPackageInfo(packageConfig);
//自定義配置
InjectionConfig icf = new InjectionConfig() {
@Override
public void initMap() {
}
};
List<FileOutConfig> foCfgList = new ArrayList<>();
foCfgList.add(new FileOutConfig("/templates/mapper.xml.ftl") {
@Override
public String outputFile(TableInfo tableInfo) {
return outPutDir+resourceStr+"/mapper/"
+"/"+tableInfo.getEntityName()+"Mapper"+ StringPool.DOT_XML;
}
});
icf.setFileOutConfigList(foCfgList);
generator.setCfg(icf);
generator.setTemplate(new TemplateConfig().setXml(""));
//策略配置
StrategyConfig strategyConfig = new StrategyConfig();
strategyConfig.setNaming(NamingStrategy.underline_to_camel);
strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel);
strategyConfig.setEntityLombokModel(true);
strategyConfig.setSuperEntityColumns("id");
strategyConfig.setControllerMappingHyphenStyle(true);
strategyConfig.setTablePrefix(packageConfig.getModuleName() + "_");
// strategyConfig.setInclude(new String[]{"users"});
generator.setStrategy(strategyConfig);
generator.execute();
}
- 配置yml配置文件
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/mybatis?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
username: root
password: 123
mybatis-plus:
mapper-locations: classpath:/mapper/**/*Mapper.xml
configuration:
# 輸出sql語句
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
server:
port: 8002
- mybatis-plus的分頁功能(兩種,只選擇最簡單的配置實現方式)
@EnableTransactionManagement
@Configuration
public class MybatisPlusConfig {
/**
* 分頁配置
* @return
*/
@Bean
public PaginationInterceptor paginationInterceptor(){
return new PaginationInterceptor();
}
調用
@RestController
@RequestMapping("/users")
public class UsersController {
@Autowired
IUsersService usersService;
@GetMapping("list")
public Object getUsers( ){
IPage<Users> page = new Page<>(1, 2);
QueryWrapper<Users> wrapper = new QueryWrapper<>();
Users user = new Users();
user.setName("虎");
wrapper.setEntity(user);
return usersService.page(page,wrapper);
}
}