如何在SpringBoot中使用MybatisPlus(mybatisplus,springboot,编程语言)

时间:2024-05-10 03:29:02 作者 : 石家庄SEO 分类 : 编程语言
  • TAG :

springboot是什么

springboot一种全新的编程规范,其设计目的是用来简化新Spring应用的初始搭建以及开发过程,SpringBoot也是一个服务于框架的框架,服务范围是简化配置文件。

项目目录结构:

如何在SpringBoot中使用MybatisPlus

pom文件:

<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.warrior</groupId><artifactId>ETH</artifactId><version>1.0-SNAPSHOT</version><!--InheritdefaultsfromSpringBoot--><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.0.BUILD-SNAPSHOT</version></parent><!--Addtypicaldependenciesforawebapplication--><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--mybatis的orm插件--><dependency><groupId>com.baomidou</groupId><artifactId>mybatisplus-spring-boot-starter</artifactId><version>1.0.4</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus</artifactId><version>2.0.7</version></dependency><!--https://mvnrepository.com/artifact/org.apache.velocity/velocity--><dependency><groupId>org.apache.velocity</groupId><artifactId>velocity</artifactId><version>1.7</version></dependency><!--https://mvnrepository.com/artifact/org.freemarker/freemarker--><dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.28</version></dependency><!--数据库连接jdbc依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><!--mysql链接依赖--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!--阿里druid数据库链接依赖--><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.9</version></dependency><!--https://mvnrepository.com/artifact/org.projectlombok/lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>0.10.1</version><scope>provided</scope></dependency></dependencies><!--Packageasanexecutablejar--><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build><!--AddSpringrepositories--><!--(youdon'tneedthisifyouareusinga.RELEASEversion)--><repositories><repository><id>spring-snapshots</id><url>http://repo.spring.io/snapshot</url><snapshots><enabled>true</enabled></snapshots></repository><repository><id>spring-milestones</id><url>http://repo.spring.io/milestone</url></repository></repositories><pluginRepositories><pluginRepository><id>spring-snapshots</id><url>http://repo.spring.io/snapshot</url></pluginRepository><pluginRepository><id>spring-milestones</id><url>http://repo.spring.io/milestone</url></pluginRepository></pluginRepositories></project>

Application

packagecom.warrior;importorg.mybatis.spring.annotation.MapperScan;importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.EnableAutoConfiguration;importorg.springframework.boot.autoconfigure.SpringBootApplication;importorg.springframework.stereotype.Controller;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.ResponseBody;@SpringBootApplication@MapperScan("com.warrior.mapper")//配置mapper扫描publicclassApplication{publicstaticvoidmain(String[]args)throwsException{SpringApplication.run(Application.class,args);}}

application.properties

#默认启用开发环境配置spring.profiles.active=dev#启用生产环境配置#spring.profiles.active=pro

application-dev.properties

server.port=8080spring.datasource.type=com.alibaba.druid.pool.DruidDataSourcespring.datasource.url=jdbc:mysql://localhost:3306/ethspring.datasource.username=rootspring.datasource.password=123456spring.datasource.driver-class-name=com.mysql.jdbc.Driverspring.datasource.max-idle=10spring.datasource.max-wait=10000spring.datasource.min-idle=5spring.datasource.initial-size=5mybatis-plus.mapper-locations=classpath:/mapper/*Mapper.xmlmybatis-plus.typeAliasesPackage=com.cn.restyle.entity

配置文件:

1).

packagecom.warrior.config;importjavax.sql.DataSource;importorg.springframework.boot.context.properties.ConfigurationProperties;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importorg.springframework.jdbc.datasource.DataSourceTransactionManager;importcom.alibaba.druid.pool.DruidDataSource;/***数据源配置*/@ConfigurationpublicclassDataSourceConfig{@Bean(name="dataSource")@ConfigurationProperties(prefix="spring.datasource")publicDataSourcedataSource(){returnnewDruidDataSource();}//配置事物管理器@Bean(name="transactionManager")publicDataSourceTransactionManagertransactionManager(){returnnewDataSourceTransactionManager(dataSource());}}

2). MybatisPlusConfig.java:

packagecom.warrior.config;importorg.mybatis.spring.annotation.MapperScan;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importcom.baomidou.mybatisplus.plugins.PaginationInterceptor;@Configuration//扫描dao或者是Mapper接口@MapperScan("com.warrior.mapper*")publicclassMybatisPlusConfig{/***mybatis-plus分页插件*/@BeanpublicPaginationInterceptorpaginationInterceptor(){PaginationInterceptorpage=newPaginationInterceptor();page.setDialectType("mysql");returnpage;}}

生成代码:

1).mysql数据库建表

如何在SpringBoot中使用MybatisPlus

2).代码生成器MpGenenator.java

importjava.util.ArrayList;importjava.util.HashMap;importjava.util.List;importjava.util.Map;importcom.baomidou.mybatisplus.generator.AutoGenerator;importcom.baomidou.mybatisplus.generator.InjectionConfig;importcom.baomidou.mybatisplus.generator.config.*;importcom.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;importcom.baomidou.mybatisplus.generator.config.po.TableInfo;importcom.baomidou.mybatisplus.generator.config.rules.DbColumnType;importcom.baomidou.mybatisplus.generator.config.rules.DbType;importcom.baomidou.mybatisplus.generator.config.rules.NamingStrategy;/***<p>*代码生成器演示*</p>*/publicclassMpGenerator{finalstaticStringdirPath="D://";/***<p>*MySQL生成演示*</p>*/publicstaticvoidmain(String[]args){AutoGeneratormpg=newAutoGenerator();//选择freemarker引擎,默认Veloctiy//mpg.setTemplateEngine(newFreemarkerTemplateEngine());//全局配置GlobalConfiggc=newGlobalConfig();gc.setOutputDir(dirPath);gc.setAuthor("lqh");gc.setFileOverride(true);//是否覆盖gc.setActiveRecord(true);//不需要ActiveRecord特性的请改为falsegc.setEnableCache(false);//XML二级缓存gc.setBaseResultMap(true);//XMLResultMapgc.setBaseColumnList(true);//XMLcolumList//自定义文件命名,注意%s会自动填充表实体属性!//gc.setMapperName("%sDao");//gc.setXmlName("%sMapper");//gc.setServiceName("MP%sService");//gc.setServiceImplName("%sServiceDiy");//gc.setControllerName("%sAction");mpg.setGlobalConfig(gc);//数据源配置DataSourceConfigdsc=newDataSourceConfig();dsc.setDbType(DbType.MYSQL);dsc.setTypeConvert(newMySqlTypeConvert(){//自定义数据库表字段类型转换【可选】@OverridepublicDbColumnTypeprocessTypeConvert(StringfieldType){System.out.println("转换类型:"+fieldType);//注意!!processTypeConvert存在默认类型转换,如果不是你要的效果请自定义返回、非如下直接返回。returnsuper.processTypeConvert(fieldType);}});dsc.setDriverName("com.mysql.jdbc.Driver");dsc.setUsername("root");dsc.setPassword("123456");dsc.setUrl("jdbc:mysql://127.0.0.1:3306/eth?characterEncoding=utf8");mpg.setDataSource(dsc);//策略配置StrategyConfigstrategy=newStrategyConfig();//strategy.setCapitalMode(true);//全局大写命名ORACLE注意strategy.setTablePrefix(newString[]{"tb_","tsys_"});//此处可以修改为您的表前缀strategy.setNaming(NamingStrategy.underline_to_camel);//表名生成策略//strategy.setInclude(newString[]{"user"});//需要生成的表//strategy.setExclude(newString[]{"test"});//排除生成的表//自定义实体父类//strategy.setSuperEntityClass("com.baomidou.demo.TestEntity");//自定义实体,公共字段//strategy.setSuperEntityColumns(newString[]{"test_id","age"});//自定义mapper父类//strategy.setSuperMapperClass("com.baomidou.demo.TestMapper");//自定义service父类//strategy.setSuperServiceClass("com.baomidou.demo.TestService");//自定义service实现类父类//strategy.setSuperServiceImplClass("com.baomidou.demo.TestServiceImpl");//自定义controller父类//strategy.setSuperControllerClass("com.baomidou.demo.TestController");//【实体】是否生成字段常量(默认false)//publicstaticfinalStringID="test_id";//strategy.setEntityColumnConstant(true);//【实体】是否为构建者模型(默认false)//publicUsersetName(Stringname){this.name=name;returnthis;}strategy.setEntityBuilderModel(true);mpg.setStrategy(strategy);//包配置PackageConfigpc=newPackageConfig();pc.setParent("com");pc.setModuleName("warrior");pc.setController("controler");pc.setEntity("entity");pc.setMapper("mapper");pc.setService("service");pc.setServiceImpl("serviceImpl");pc.setXml("mapperXml");mpg.setPackageInfo(pc);//注入自定义配置,可以在VM中使用cfg.abc【可无】InjectionConfigcfg=newInjectionConfig(){@OverridepublicvoidinitMap(){Map<String,Object>map=newHashMap<String,Object>();map.put("abc",this.getConfig().getGlobalConfig().getAuthor()+"-mp");this.setMap(map);}};//自定义xxList.jsp生成List<FileOutConfig>focList=newArrayList<FileOutConfig>();/*focList.add(newFileOutConfig("/template/list.jsp.vm"){@OverridepublicStringoutputFile(TableInfotableInfo){//自定义输入文件名称return"D://my_"+tableInfo.getEntityName()+".jsp";}});cfg.setFileOutConfigList(focList);mpg.setCfg(cfg);*///调整xml生成目录演示/*focList.add(newFileOutConfig("/templates/mapper.xml.vm"){@OverridepublicStringoutputFile(TableInfotableInfo){returndirPath+tableInfo.getEntityName()+"Mapper.xml";}});cfg.setFileOutConfigList(focList);*/mpg.setCfg(cfg);//关闭默认xml生成,调整生成至根目录/*TemplateConfigtc=newTemplateConfig();tc.setXml(null);mpg.setTemplate(tc);*///自定义模板配置,可以copy源码mybatis-plus/src/main/resources/templates下面内容修改,//放置自己项目的src/main/resources/templates目录下,默认名称一下可以不配置,也可以自定义模板名称//TemplateConfigtc=newTemplateConfig();//tc.setController("...");//tc.setEntity("...");//tc.setMapper("...");//tc.setXml("...");//tc.setService("...");//tc.setServiceImpl("...");//如上任何一个模块如果设置空ORNull将不生成该模块。//mpg.setTemplate(tc);//执行生成mpg.execute();//打印注入设置【可无】System.err.println(mpg.getCfg().getMap().get("abc"));}}

生成的文件如下,只要将对应文件拷到项目对应包即可:

如何在SpringBoot中使用MybatisPlus

下面把对应类展示出来:

.entity-->Student.java

packagecom.warrior.entity;importcom.baomidou.mybatisplus.enums.IdType;importcom.baomidou.mybatisplus.annotations.TableId;importcom.baomidou.mybatisplus.annotations.TableField;importcom.baomidou.mybatisplus.activerecord.Model;importcom.baomidou.mybatisplus.annotations.TableName;importjava.io.Serializable;/***<p>**</p>**@authorlqh*@since2018-05-25*/@TableName("tb_student")publicclassStudentextendsModel<Student>{privatestaticfinallongserialVersionUID=1L; @TableId(value="id",type=IdType.AUTO) privateIntegerid; @TableField("stu_name") privateStringstuName; @TableField("stu_number") privateStringstuNumber; privateIntegerage; publicIntegergetId(){ returnid; } publicStudentsetId(Integerid){ this.id=id; returnthis; } publicStringgetStuName(){ returnstuName; } publicStudentsetStuName(StringstuName){ this.stuName=stuName; returnthis; } publicStringgetStuNumber(){ returnstuNumber; } publicStudentsetStuNumber(StringstuNumber){ this.stuNumber=stuNumber; returnthis; } publicIntegergetAge(){ returnage; } publicStudentsetAge(Integerage){ this.age=age; returnthis; } @Override protectedSerializablepkVal(){ returnthis.id; }}

.mapper-->StudentMapper.java

packagecom.warrior.mapper;importcom.warrior.entity.Student;importcom.baomidou.mybatisplus.mapper.BaseMapper;/***<p>*Mapper接口*</p>**@authorlqh*@since2018-05-25*/publicinterfaceStudentMapperextendsBaseMapper<Student>{}

mapperXml-->StudentMapper.xml(这个文件要放到src/main/resources/mapper)

<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEmapperPUBLIC"-//mybatis.org//DTDMapper3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mappernamespace="com.warrior.mapper.StudentMapper"> <!--通用查询映射结果--> <resultMapid="BaseResultMap"type="com.warrior.entity.Student"> <idcolumn="id"property="id"/> <resultcolumn="stu_name"property="stuName"/> <resultcolumn="stu_number"property="stuNumber"/> <resultcolumn="age"property="age"/> </resultMap><!--通用查询结果列--><sqlid="Base_Column_List">id,stu_nameASstuName,stu_numberASstuNumber,age</sql></mapper>

.service-->IStudentService.java

packagecom.warrior.service;importcom.warrior.entity.Student;importcom.baomidou.mybatisplus.service.IService;/***<p>*服务类*</p>**@authorlqh*@since2018-05-25*/publicinterfaceIStudentServiceextendsIService<Student>{}

.serviceImpl-->StudentServiceImpl.java

packagecom.warrior.serviceImpl;importcom.warrior.entity.Student;importcom.warrior.mapper.StudentMapper;importcom.warrior.service.IStudentService;importcom.baomidou.mybatisplus.service.impl.ServiceImpl;importorg.springframework.stereotype.Service;/***<p>*服务实现类*</p>**@authorlqh*@since2018-05-25*/@ServicepublicclassStudentServiceImplextendsServiceImpl<StudentMapper,Student>implementsIStudentService{}

.controler-->StudentController.java

packagecom.warrior.controler;importorg.springframework.stereotype.Controller;importorg.springframework.web.bind.annotation.RequestMapping;/***<p>*前端控制器*</p>**@authorlqh*@since2018-05-25*/@Controller@RequestMapping("/warrior/student")publicclassStudentController{}

经过以上六步项目已经搭建完成,下面就是写业务代码了,只需要实现controller即可,下面对StudentController.java进行修改:

packagecom.warrior.controler;importcom.warrior.entity.Student;importcom.warrior.service.IStudentService;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Controller;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.ResponseBody;/***<p>*前端控制器*</p>**@authorlqh*@since2018-05-05*/@Controller@RequestMapping("/warrior/student")publicclassStudentController{@AutowiredIStudentServiceiStudentService;@RequestMapping("/hello")@ResponseBodypublicStringhello(){//insertStudentstudent=newStudent().setStuName("zhangsan").setStuNumber("54").setAge(23);booleanres=iStudentService.insert(student);returnres?"success":"fail";}}
 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:如何在SpringBoot中使用MybatisPlus的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:重写、覆盖、重载、多态区别是什么下一篇:

2 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18