这篇文章将为大家详细讲解有关Springboot怎么通过Mybatis和Mybatis-plus实现数据库访问功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

1. 创建SpringBoot项目1.1 引入依赖

pom.xml

<?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><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.3.RELEASE</version></parent><groupId>com.gcl</groupId><artifactId>vue_day03_admin</artifactId><version>1.0-SNAPSHOT</version><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version></properties><dependencies><!--spring-web--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--mybatis-plus--><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></dependency><!--mysql驱动--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.46</version></dependency><!--数据库连接池--><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.21</version></dependency><!--lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><!--测试--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!--lang3工具类--><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.10</version></dependency></dependencies><!--maven插件,可以将应用打包成一个可执行的jar包;--><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>1.2 编写配置文件

application.yml

server:port:8088spring:datasource:driver-class-name:com.mysql.jdbc.Drivertype:com.alibaba.druid.pool.DruidDataSourceurl:jdbc:mysql://192.168.0.131:3306/vue_day03?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTCusername:rootpassword:Root@123456mybatis-plus:type-aliases-package:com.gcl.entityconfiguration:map-underscore-to-camel-case:trueuse-generated-keys:truelog-impl:org.apache.ibatis.logging.stdout.StdOutImplmapper-locations:classpath:com/gcl/mapper/*Mapper.xmllogging:level:com.demo.mapper:debug2. 编写MybatisPlus代码生成工具类

2.1 编写代码生成工具类

CodeGenerator.java

packagecom.gcl.utils;importcom.baomidou.mybatisplus.annotation.DbType;importcom.baomidou.mybatisplus.core.exceptions.MybatisPlusException;importcom.baomidou.mybatisplus.core.toolkit.StringPool;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.IColumnType;importcom.baomidou.mybatisplus.generator.config.rules.NamingStrategy;importcom.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;importorg.apache.commons.lang3.StringUtils;importjava.util.ArrayList;importjava.util.List;importjava.util.Scanner;//执行main方法控制台输入模块表名回车自动生成对应项目目录中publicclassCodeGenerator{/***<p>*读取控制台内容*</p>*/publicstaticStringscanner(Stringtip){Scannerscanner=newScanner(System.in);StringBuilderhelp=newStringBuilder();help.append("请输入"+tip+":");System.out.println(help.toString());if(scanner.hasNext()){Stringipt=scanner.next();if(StringUtils.isNotEmpty(ipt)){returnipt;}}thrownewMybatisPlusException("请输入正确的"+tip+"!");}publicstaticvoidmain(String[]args){//代码生成器AutoGeneratormpg=newAutoGenerator();//全局配置GlobalConfiggc=newGlobalConfig();StringprojectPath=System.getProperty("user.dir");gc.setOutputDir(projectPath+"/vue_day03_admin/src/main/java");gc.setAuthor("gcl");//是否打开输出目录,默认truegc.setOpen(false);//开启ActiveRecord模式,默认falsegc.setActiveRecord(true);//是否覆盖已有文件gc.setFileOverride(true);//XML开启BaseResultMapgc.setBaseResultMap(true);//XML开启baseColumnListgc.setBaseColumnList(true);//自定义文件命名,注意%s会自动填充表实体属性!//gc.setMapperName("%sDao");//gc.setXmlName("%sMapper");gc.setServiceName("%sService");//gc.setServiceImplName("%sServiceDiy");//gc.setControllerName("%sAction");mpg.setGlobalConfig(gc);//数据源配置DataSourceConfigdsc=newDataSourceConfig();dsc.setDbType(DbType.MYSQL);dsc.setUrl("jdbc:mysql://192.168.0.131:3306/vue_day03?useUnicode=true&useSSL=false&characterEncoding=utf8");dsc.setDriverName("com.mysql.jdbc.Driver");dsc.setUsername("root");dsc.setPassword("Root@123456");dsc.setTypeConvert(newMySqlTypeConvert(){//自定义数据库表字段类型转换【可选】@OverridepublicIColumnTypeprocessTypeConvert(GlobalConfigglobalConfig,StringfieldType){System.out.println("转换类型:"+fieldType);//注意!!processTypeConvert存在默认类型转换,如果不是你要的效果请自定义返回、非如下直接返回。returnsuper.processTypeConvert(globalConfig,fieldType);}});mpg.setDataSource(dsc);//包配置PackageConfigpc=newPackageConfig();//com.demo.userpc.setParent("com");//pc.setModuleName("user");pc.setModuleName(scanner("模块名"));mpg.setPackageInfo(pc);//自定义配置InjectionConfigcfg=newInjectionConfig(){@OverridepublicvoidinitMap(){//TODO}};mpg.setCfg(cfg);//如果模板引擎是freemarkerStringtemplatePath="/templates/mapper.xml.ftl";//自定义输出配置List<FileOutConfig>focList=newArrayList<>();//自定义配置会被优先输出focList.add(newFileOutConfig(templatePath){@OverridepublicStringoutputFile(TableInfotableInfo){//自定义输出文件名,如果你Entity设置了前后缀、此处注意xml的名称会跟着发生变化!!returnprojectPath+"/vue_day03_admin/src/main/resources/com/gcl/mapper"+"/"+tableInfo.getEntityName()+"Mapper"+StringPool.DOT_XML;}});cfg.setFileOutConfigList(focList);mpg.setCfg(cfg);//配置模板TemplateConfigtemplateConfig=newTemplateConfig();templateConfig.setXml(null);mpg.setTemplate(templateConfig);//策略配置StrategyConfigstrategy=newStrategyConfig();strategy.setEntityLombokModel(true);strategy.setRestControllerStyle(true);//此处可以修改为您的表前缀strategy.setTablePrefix(newString[]{"tb_","tsys_","t_"});//表名生成策略strategy.setNaming(NamingStrategy.underline_to_camel);//需要生成的表strategy.setInclude(scanner("表名,多个英文逗号分割").split(","));//strategy.setInclude(newString[]{"tb_user"});strategy.setEntityBuilderModel(true);mpg.setStrategy(strategy);mpg.setTemplateEngine(newFreemarkerTemplateEngine());mpg.execute();}}2.2 创建数据库及表

创表语句

CREATETABLE`t_user`(`id`int(60)NOTNULLAUTO_INCREMENTCOMMENT'主键',`username`varchar(255)DEFAULTNULLCOMMENT'姓名',`salary`double(7,2)DEFAULTNULLCOMMENT'薪水',`age`int(11)DEFAULTNULL,`desc`varchar(255)DEFAULTNULLCOMMENT'描述',PRIMARYKEY(`id`))ENGINE=InnoDBDEFAULTCHARSET=utf8mb4;2.3 测试代码生成器

执行CodeGenerator类中的main方法

执行代码生成器之后的结果

3. 添加分页配置

MyBatisPlusConfig.java

packagecom.gcl.config;importcom.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;/***@ClassNameMyBatisPlusConfig*@DescriptionTODO*@Authorgcl*@Date2021-03-188:36**/@ConfigurationpublicclassMyBatisPlusConfig{/***mybatis-plus分页插件*/@BeanpublicPaginationInterceptorpaginationInterceptor(){PaginationInterceptorpaginationInterceptor=newPaginationInterceptor();returnpaginationInterceptor;}}

4. 测试访问接口从数据库中获取数据(带分页)

4.1 数据库中添加5条数据

INSERTINTO`vue_day03`.`t_user`(`id`,`username`,`salary`,`age`,`desc`)VALUES('1','张三','2000.00','23','95年05月生');INSERTINTO`vue_day03`.`t_user`(`id`,`username`,`salary`,`age`,`desc`)VALUES('2','李四','3000.00','24','96年06年生');INSERTINTO`vue_day03`.`t_user`(`id`,`username`,`salary`,`age`,`desc`)VALUES('3','王五','4000.00','25','07年07年生');INSERTINTO`vue_day03`.`t_user`(`id`,`username`,`salary`,`age`,`desc`)VALUES('4','赵六','5000.00','26','08年08月生');INSERTINTO`vue_day03`.`t_user`(`id`,`username`,`salary`,`age`,`desc`)VALUES('5','田七','6000.00','27','09年09月生');

4.2 编写查询方法

packagecom.gcl.controller;importcom.baomidou.mybatisplus.core.conditions.query.Query;importcom.baomidou.mybatisplus.core.conditions.query.QueryWrapper;importcom.baomidou.mybatisplus.core.metadata.IPage;importcom.baomidou.mybatisplus.extension.plugins.pagination.Page;importcom.gcl.entity.User;importcom.gcl.service.UserService;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RestController;importjava.util.List;/***<p>*前端控制器*</p>**@authorgcl*@since2021-04-10*/@RestController@RequestMapping("/user")publicclassUserController{@AutowiredprivateUserServiceuserService;/****@parampageNo当前页*@parampageSize每页显示的记录数*@return*/@GetMappingpublicList<User>findList(intpageNo,intpageSize){//创建查询条件封装器QueryWrapper<User>wrapper=newQueryWrapper<>();Page<User>page=newPage<>(pageNo,pageSize);IPage<User>iPage=userService.page(page,wrapper);List<User>records=iPage.getRecords();returnrecords;}}

关于“Springboot怎么通过Mybatis和Mybatis-plus实现数据库访问功能”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。