Springboot怎么通过Mybatis和Mybatis-plus实现数据库访问功能
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章将为大家详细讲解有关Springboot怎么通过Mybatis和Mybatis-plus实现数据库访问功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.
千家信息网最后更新 2026年11月03日Springboot怎么通过Mybatis和Mybatis-plus实现数据库访问功能
这篇文章将为大家详细讲解有关Springboot怎么通过Mybatis和Mybatis-plus实现数据库访问功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
1. 创建SpringBoot项目
1.1 引入依赖
pom.xml
4.0.0 org.springframework.boot spring-boot-starter-parent 2.3.3.RELEASE com.gcl vue_day03_admin 1.0-SNAPSHOT UTF-8 UTF-8 1.8 org.springframework.boot spring-boot-starter-web com.baomidou mybatis-plus-boot-starter 3.2.0 com.baomidou mybatis-plus-generator 3.2.0 org.freemarker freemarker mysql mysql-connector-java 5.1.46 com.alibaba druid-spring-boot-starter 1.1.21 org.projectlombok lombok true org.springframework.boot spring-boot-starter-test test org.apache.commons commons-lang3 3.10 org.springframework.boot spring-boot-maven-plugin 1.2 编写配置文件
application.yml
server: port: 8088spring: datasource: driver-class-name: com.mysql.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource url: jdbc:mysql://192.168.0.131:3306/vue_day03?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC username: root password: Root@123456mybatis-plus: type-aliases-package: com.gcl.entity configuration: map-underscore-to-camel-case: true use-generated-keys: true log-impl: org.apache.ibatis.logging.stdout.StdOutImpl mapper-locations: classpath:com/gcl/mapper/*Mapper.xmllogging: level: com.demo.mapper: debug
2. 编写MybatisPlus代码生成工具类
2.1 编写代码生成工具类
CodeGenerator.java
package com.gcl.utils;import com.baomidou.mybatisplus.annotation.DbType;import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;import com.baomidou.mybatisplus.core.toolkit.StringPool;import com.baomidou.mybatisplus.generator.AutoGenerator;import com.baomidou.mybatisplus.generator.InjectionConfig;import com.baomidou.mybatisplus.generator.config.*;import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;import com.baomidou.mybatisplus.generator.config.po.TableInfo;import com.baomidou.mybatisplus.generator.config.rules.IColumnType;import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;import org.apache.commons.lang3.StringUtils;import java.util.ArrayList;import java.util.List;import java.util.Scanner;// 执行 main 方法控制台输入模块表名回车自动生成对应项目目录中public class CodeGenerator { /** * * 读取控制台内容 *
*/ public static String scanner(String tip) { Scanner scanner = new Scanner(System.in); StringBuilder help = new StringBuilder(); help.append("请输入" + tip + ":"); System.out.println(help.toString()); if (scanner.hasNext()) { String ipt = scanner.next(); if (StringUtils.isNotEmpty(ipt)) { return ipt; } } throw new MybatisPlusException("请输入正确的" + tip + "!"); } public static void main(String[] args) { // 代码生成器 AutoGenerator mpg = new AutoGenerator(); // 全局配置 GlobalConfig gc = new GlobalConfig(); String projectPath = System.getProperty("user.dir"); gc.setOutputDir(projectPath + "/vue_day03_admin/src/main/java"); gc.setAuthor("gcl"); // 是否打开输出目录,默认true gc.setOpen(false); // 开启 ActiveRecord 模式,默认false gc.setActiveRecord(true); // 是否覆盖已有文件 gc.setFileOverride(true); // XML 开启 BaseResultMap gc.setBaseResultMap(true); // XML 开启 baseColumnList gc.setBaseColumnList(true); // 自定义文件命名,注意 %s 会自动填充表实体属性! // gc.setMapperName("%sDao"); // gc.setXmlName("%sMapper"); gc.setServiceName("%sService"); // gc.setServiceImplName("%sServiceDiy"); // gc.setControllerName("%sAction"); mpg.setGlobalConfig(gc); // 数据源配置 DataSourceConfig dsc = new DataSourceConfig(); 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(new MySqlTypeConvert(){ // 自定义数据库表字段类型转换【可选】 @Override public IColumnType processTypeConvert(GlobalConfig globalConfig, String fieldType) { System.out.println("转换类型:" + fieldType); // 注意!!processTypeConvert 存在默认类型转换,如果不是你要的效果请自定义返回、非如下直接返回。 return super.processTypeConvert(globalConfig, fieldType); } }); mpg.setDataSource(dsc); // 包配置 PackageConfig pc = new PackageConfig(); // com.demo.user pc.setParent("com");// pc.setModuleName("user"); pc.setModuleName(scanner("模块名")); mpg.setPackageInfo(pc); // 自定义配置 InjectionConfig cfg = new InjectionConfig() { @Override public void initMap() { // TODO } }; mpg.setCfg(cfg); // 如果模板引擎是 freemarker String templatePath = "/templates/mapper.xml.ftl"; // 自定义输出配置 List focList = new ArrayList<>(); // 自定义配置会被优先输出 focList.add(new FileOutConfig(templatePath) { @Override public String outputFile(TableInfo tableInfo) { // 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!! return projectPath + "/vue_day03_admin/src/main/resources/com/gcl/mapper" + "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML; } }); cfg.setFileOutConfigList(focList); mpg.setCfg(cfg); // 配置模板 TemplateConfig templateConfig = new TemplateConfig(); templateConfig.setXml(null); mpg.setTemplate(templateConfig); // 策略配置 StrategyConfig strategy = new StrategyConfig(); strategy.setEntityLombokModel(true); strategy.setRestControllerStyle(true); // 此处可以修改为您的表前缀 strategy.setTablePrefix(new String[] { "tb_", "tsys_","t_" }); // 表名生成策略 strategy.setNaming(NamingStrategy.underline_to_camel); // 需要生成的表 strategy.setInclude(scanner("表名,多个英文逗号分割").split(","));// strategy.setInclude(new String[] { "tb_user" }); strategy.setEntityBuilderModel(true); mpg.setStrategy(strategy); mpg.setTemplateEngine(new FreemarkerTemplateEngine()); mpg.execute(); }} 2.2 创建数据库及表
创表语句
CREATE TABLE `t_user` ( `id` int(60) NOT NULL AUTO_INCREMENT COMMENT '主键', `username` varchar(255) DEFAULT NULL COMMENT '姓名', `salary` double(7,2) DEFAULT NULL COMMENT '薪水', `age` int(11) DEFAULT NULL, `desc` varchar(255) DEFAULT NULL COMMENT '描述', PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;2.3 测试代码生成器
执行CodeGenerator类中的main方法
执行代码生成器之后的结果
3. 添加分页配置
MyBatisPlusConfig.java
package com.gcl.config;import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;/** * @ClassName MyBatisPlusConfig * @Description TODO * @Author gcl * @Date 2021-03-18 8:36 **/@Configurationpublic class MyBatisPlusConfig { /** * mybatis-plus 分页插件 */ @Bean public PaginationInterceptor paginationInterceptor() { PaginationInterceptor paginationInterceptor = new PaginationInterceptor(); return paginationInterceptor; }}4. 测试访问接口从数据库中获取数据(带分页)
4.1 数据库中添加5条数据
INSERT INTO `vue_day03`.`t_user` (`id`, `username`, `salary`, `age`, `desc`) VALUES ('1', '张三', '2000.00', '23', '95年05月生');INSERT INTO `vue_day03`.`t_user` (`id`, `username`, `salary`, `age`, `desc`) VALUES ('2', '李四', '3000.00', '24', '96年06年生');INSERT INTO `vue_day03`.`t_user` (`id`, `username`, `salary`, `age`, `desc`) VALUES ('3', '王五', '4000.00', '25', '07年07年生');INSERT INTO `vue_day03`.`t_user` (`id`, `username`, `salary`, `age`, `desc`) VALUES ('4', '赵六', '5000.00', '26', '08年08月生');INSERT INTO `vue_day03`.`t_user` (`id`, `username`, `salary`, `age`, `desc`) VALUES ('5', '田七', '6000.00', '27', '09年09月生');4.2 编写查询方法
package com.gcl.controller;import com.baomidou.mybatisplus.core.conditions.query.Query;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;import com.baomidou.mybatisplus.core.metadata.IPage;import com.baomidou.mybatisplus.extension.plugins.pagination.Page;import com.gcl.entity.User;import com.gcl.service.UserService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import java.util.List;/** * * 前端控制器 *
* * @author gcl * @since 2021-04-10 */@RestController@RequestMapping("/user")public class UserController { @Autowired private UserService userService; /** * * @param pageNo 当前页 * @param pageSize 每页显示的记录数 * @return */ @GetMapping public List findList(int pageNo,int pageSize){ //创建查询条件封装器 QueryWrapper wrapper = new QueryWrapper<>(); Page page = new Page<>(pageNo, pageSize); IPage iPage = userService.page(page, wrapper); List records = iPage.getRecords(); return records; }} 关于"Springboot怎么通过Mybatis和Mybatis-plus实现数据库访问功能"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
配置
数据
生成
数据库
代码
文件
输出
方法
生成器
篇文章
类型
月生
控制
输入
功能
代码生成
内容
工具
年生
控制台
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
上海挚品互联网科技有限公司
互联网科技官网
重庆互联网络科技
上海互联网科技有限公司
北京互联网科技公司
艾特科技互联网
互联网科技logo
互联网科技公司有哪些
联恩商钥互联网科技有限公司
海南科技产业互联网平台
广州优美互联网科技
互联网科技产业特征
宜昌元轩互联网科技有限公司
呼和浩特新华互联网科技学院
科技大学互联网
富国互联网科技002692
济南小医互联网科技有限公司招聘
山东蛋芒互联网科技有限公司
互联网领先科技成果宣传视频
东风日产互联网科技公司叫什么
上海挚品互联网科技有限公司
互联网科技财经
万易互联网科技有限公司
互联网科技革命
狮子座互联网科技培训
撒么互联网科技公司
互联网科技和法律行业
科技赋能视角下互联网保险发展
互联网科技资金流入
卡尔迅互联网科技有限公司