Springboot怎么通过Mybatis和Mybatis-plus实现数据库访问功能
发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,这篇文章将为大家详细讲解有关Springboot怎么通过Mybatis和Mybatis-plus实现数据库访问功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.
千家信息网最后更新 2025年01月21日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安全错误
数据库的锁怎样保障安全
什么是isql数据库
中考计算机网络技术分数线
数据库中避免死锁
2021mysql数据库教程
服务器bios设置图解教程
光遇为什么会显示服务器满了
五一网络安全手抄报六年级
阿里服务器安全配置
gmod13服务器
人行服务器
软件开发一般需要什么证书
李星宇数据库
网络安全设置组织网络连接
运维服务器管理
贵安服务器托管
华为软件开发岗在哪里
证件照排版软件开发
微电影网络安全吗
平谷区数据网络技术软件
2012网络安全
湖南华昊网络技术有限公司
网络安全法规教育心得体会
软件开发与硬件哪个好
战地2账号服务器
伟思安信网络安全隔离卡
服务器80端口时断时好
bim入库工具支持哪些数据库
关于网络安全的想法
2019年网络安全赛
新畅网络技术 黑卡