当前位置: 首页 > 后端技术 > Java

springbootintegrationmybatis-plus

时间:2023-04-01 14:50:42 Java

1MyBatis-plus简介MyBatis-plus是MyBatis简化开发的强大增强工具包。该工具包为MyBatis提供了一些高效、实用、开箱即用的特性,使用它可以有效节省开发时间。1.1优点MyBatis-plus提供了基本的增删改查、分页查询等接口,可以有效简化开发,提高开发效率。尤其是后台管理系统、操作系统等场景,特别适合使用MyBatis-plus进行开发。内置的代码生成器也很好用,生成器可以快速生成Mapper.java、Mapper.xml、dao、service、controller层代码。支持多种数据库:支持mysql、oracle、db2、h2、hsql、sqlite、postgresql、sqlserver、Phoenix、Gauss、clickhouse、Sybase、OceanBase、Firebird、cuberid、goldilocks、csiidb等数据库2spring-boot集成MyBatis-plus2。1导入pom依赖com.baomidoumybatis-plus-boot-starter3.2.0mysqlmysql-connector-java8.0.17PS:可以自己修改版本。2.2配置数据库ymlspring:datasource:driver-class-name:com.mysql.cj.jdbc.Driver用户名:root密码:123456url:jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghaitype:com.alibaba.druid.pool.DruidDataSource#LoggerConfiglogging:level:com.baomidou.mybatisplus.samples:debug2.3添加配置文件@Configuration@MapperScan("com.prepared.mapper")publicclassMybatisPlusConfig{}PS:如果需要分页,需要添加分页配置//老版本//@Bean//publicPaginationInterceptorpaginationInterceptor(){//PaginationInterceptorpaginationInterceptor=newPaginationInterceptor();////设置请求页面大于最大页面运行后true返回首页,false继续请求默认false////paginationInterceptor.setOverflow(false);////设置单页限制的最大数量,默认为500,-1为无限制////paginationInterceptor.setLimit(500);////开启countjoin优化,只针对部分leftjoins//paginationInterceptor.setCountSqlParser(新的JsqlParserCountOptimize(true));//returnpaginationInterceptor;//}//最新版@BeanpublicMybatisPlusInterceptormybatisPlusInterceptor(){MybatisPlusInterceptorinterceptor=newMybatisPlusInterceptor();interceptor.addInnerInterceptor(newPaginationInnerInterceptor(DbType.MYSQL));returninterceptor;}2.4集成代码生成器导入pom包com.baomidoumybatis-plus-generator3.4.1org.freemarkerfreemarker2.3.28代码生成类packagecom.prepared;importcom.baomidou.mybatisplus.core.exceptions.MybatisPlusException;导入com.baomidou.mybatisplus.core.toolkit.StringPool;导入com.baomidou.mybatisplus.core.toolkit.StringUtils;导入com.baomidou.mybatisplus.generator.AutoGenerator;导入com.baomidou.mybatisplus.generator.InjectionConfig;importcom.baomidou.mybatisplus.generator.config.*;importcom.baomidou.mybatisplus.generator.config.po.TableInfo;importcom.baomidou.mybatisplus.generator.config.rules.NamingStrategy;importcom.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;importjava.util.ArrayList;importjava.util.List;importjava.util.Scanner;//演示示例,执行main方法控制台输入模块表回车后在对应工程目录自动生成publicclassCodeGenerator{/***

*读取控制台内容*

*/publicstaticStringscanner(Stringtip){Scannerscanner=newScanner(System.in);StringBuilderhelp=newStringBuilder();help.append("请输入"+tip+":");System.out.println(help.toString());如果(scanner.hasNext()){Stringipt=scanner.next();如果(StringUtils.isNotBlank(ipt)){返回ipt;}}thrownewMybatisPlusException("请输入正确的"+tip+“!”);}publicstaticvoidmain(String[]args){//代码生成器AutoGeneratormpg=newAutoGenerator();//全局配置GlobalConfiggc=newGlobalConfig();//StringprojectPath=System.getProperty("user.dir");StringprojectPath="/Users/shibo_zhong/Documents/workspace-prepared/spring-boot-learning/spring-boot-mybatis-plus";gc.setOutputDir(projectPath+"/src/main/java");gc.setAuthor("准备好");gc.setOpen(真);//gc.setSwagger2(true);实体属性Swagger2注解mpg.setGlobalConfig(gc);//数据源配置DataSourceConfigdsc=newDataSourceConfig();dsc.setUrl("jdbc:mysql://localhost:3306/test?useUnicode=true&useSSL=false&characterEncoding=utf8");//dsc.setSchemaName("public");dsc.setDriverName("com.mysql.cj.jdbc.Driver");dsc.setUsername("root");dsc.setPassword("123456");mpg.setDataSource(dsc);//封装配置PackageConfigpc=newPackageConfig();pc.setModuleName(scanner("模块名称"));pc.setParent("com");mpg.setPackageInfo(pc);//自定义配置InjectionConfigcfg=newInjectionConfig(){@OverridepublicvoidinitMap(){//什么也不做}};//如果模板引擎是freemarkerStringtemplatePath="/templates/mapper.xml.ftl";//如果模板引擎是velocity//StringtemplatePath="/templates/mapper.xml.vm";//自定义输出配置ListfocList=newArrayList<>();//自定义配置会先输出focList.add(newFileOutConfig(templatePath){@OverridepublicStringoutputFile(TableInfotableInfo){//自定义输出文件名,如果为Entity设置了前缀和后缀,注意名称的xml将相应地改变!!returnprojectPath+"/src/main/resources/mapper/"+pc.getModuleName()+"/"+tableInfo.getEntityName()+"Mapper"+StringPool.DOT_XML;}});/*cfg.setFileCreate(newIFileCreate(){@OverridepublicbooleanisCreate(ConfigBuilderconfigBuilder,FileTypefileType,StringfilePath){//判断是否需要创建自定义文件夹checkDir("调用默认方法创建的目录,自定义目录使用");if(fileType==FileType.MAPPER){//mapper文件已经生成,判断其存在,不想重新生成returnfalsereturn!newFile(filePath).exists();}//允许生成模板文件returntrue;}});*/cfg.setFileOutConfigList(focList);mpg.setCfg(cfg);//配置模板TemplateConfigtemplateConfig=newTemplateConfig();//配置自定义输出模板//指定自定义模板路径,注意不要带.ftl/.vm,会根据使用的模板引擎自动识别//templateConfig.setEntity("templates/entity2.java");//templateConfig.setService();//模板配置。设置控制器();模板配置。设置Xml(空);mpg.setTemplate(templateConfig);//策略配置StrategyConfigstrategy=newStrategyConfig();strategy.setNaming(NamingStrategy.underline_to_camel);strategy.setColumnNaming(NamingStrategy.underline_to_camel);//strategy.setSuperEntityClass("你自己的父实体类,不用设置!");strategy.setEntityLombokModel(true);strategy.setRestControllerStyle(true);//publicparentclass//strategy.setSuperControllerClass("你自己的父类控制器,不用设置!");//写在父类中的公共字段strategy.setSuperEntityColumns("id");strategy.setInclude(scanner("tuser").split(","));strategy.setControllerMappingHyphenStyle(true);strategy.setTablePrefix(pc.getModuleName()+"_");mpg.setStrategy(策略);mpg.setTemplateEngine(newFreemarkerTemplateEngine());mpg.execute();}}执行main方法,按照提示生成代码,请输入模块名称:prepared请输入tuser:tuser生成代码如下:3验证编写测试类@RunWith(SpringRunner.class)@SpringBootTestpublicclassMybatisPlusApplicationTests{@ResourceprivateTuserMappertuserMapper;@TestpublicvoidtestAddUser(){Tusertuser=newTuser();tuser.setAge(1);tuser.setIdCard("123415413");.setName("准备好");tuserMapper.insert(tuser);}}集成完成!github开源地址api文档本文涉及代码地址