SpringBoot整合Mybatis-Pius(简单易懂!)
SpringBoot整合Mybatis-Pius
新建springboot项目
开发工具:idea2020.2,maven3
按需导入
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="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.0 https://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><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.example</groupId><artifactId>mp</artifactId><version>0.0.1-SNAPSHOT</version><name>mp</name><description>Demo project for Spring Boot</description><properties><java.version>11</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.3</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><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><exclusions><exclusion><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId></exclusion></exclusions></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><version>2.3.28</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
application.yml
spring:datasource:url: jdbc:mysql://192.168.3.50/mp_test?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8username: rootpassword: roothikari:max-lifetime: 180000
server:port: 8082servlet:context-path: /mybatis-plus:configuration:map-underscore-to-camel-case: trueauto-mapping-behavior: fulllog-impl: org.apache.ibatis.logging.stdout.StdOutImplmapper-locations: classpath*:mapper/**/*Mapper.xmlglobal-config:# 逻辑删除配置db-config:# 删除前logic-not-delete-value: 1# 删除后logic-delete-value: 0
代码生成器Generator.java
根据自己需求去修改配置
package com.example.mp;import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.InjectionConfig;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.po.TableInfo;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;// 演示例子,执行 main 方法控制台输入模块表名回车自动生成对应项目目录中
public class Generator {/*** <p>* 读取控制台内容* </p>*/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 + "/src/main/java");gc.setAuthor("jobob");gc.setOpen(false);// gc.setSwagger2(true); 实体属性 Swagger2 注解mpg.setGlobalConfig(gc);// 数据源配置DataSourceConfig dsc = new DataSourceConfig();dsc.setUrl("jdbc:mysql://192.168.3.50/mp_test?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8");// dsc.setSchemaName("public");dsc.setDriverName("com.mysql.jdbc.Driver");dsc.setUsername("root");dsc.setPassword("9bdffb1cdc1c60dd");mpg.setDataSource(dsc);// 包配置PackageConfig pc = new PackageConfig();//pc.setModuleName(scanner("模块名"));pc.setParent("com.example.demo");mpg.setPackageInfo(pc);// 自定义配置InjectionConfig cfg = new InjectionConfig() {@Overridepublic void initMap() {// to do nothing}};// 如果模板引擎是 freemarkerString templatePath = "/templates/mapper.xml.ftl";// 如果模板引擎是 velocity// String templatePath = "/templates/mapper.xml.vm";// 自定义输出配置List<FileOutConfig> focList = new ArrayList<>();// 自定义配置会被优先输出focList.add(new FileOutConfig(templatePath) {@Overridepublic String outputFile(TableInfo tableInfo) {// 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!return projectPath + "/src/main/resources/mapper/" + pc.getModuleName()+ "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;}});/*cfg.setFileCreate(new IFileCreate() {@Overridepublic boolean isCreate(ConfigBuilder configBuilder, FileType fileType, String filePath) {// 判断自定义文件夹是否需要创建checkDir("调用默认方法创建的目录,自定义目录用");if (fileType == FileType.MAPPER) {// 已经生成 mapper 文件判断存在,不想重新生成返回 falsereturn !new File(filePath).exists();}// 允许生成模板文件return true;}});*/cfg.setFileOutConfigList(focList);mpg.setCfg(cfg);// 配置模板TemplateConfig templateConfig = new TemplateConfig();// 配置自定义输出模板//指定自定义模板路径,注意不要带上.ftl/.vm, 会根据使用的模板引擎自动识别// templateConfig.setEntity("templates/entity2.java");// templateConfig.setService();// templateConfig.setController();templateConfig.setXml(null);mpg.setTemplate(templateConfig);// 策略配置StrategyConfig strategy = new StrategyConfig();strategy.setNaming(NamingStrategy.underline_to_camel);strategy.setColumnNaming(NamingStrategy.underline_to_camel);strategy.setSuperEntityClass("你自己的父类实体,没有就不用设置!");strategy.setEntityLombokModel(true);strategy.setRestControllerStyle(true);// 公共父类strategy.setSuperControllerClass("你自己的父类控制器,没有就不用设置!");// 写于父类中的公共字段strategy.setSuperEntityColumns("id");strategy.setInclude(scanner("表名,多个英文逗号分割").split(","));strategy.setControllerMappingHyphenStyle(true);strategy.setTablePrefix(pc.getModuleName() + "_");mpg.setStrategy(strategy);mpg.setTemplateEngine(new FreemarkerTemplateEngine());mpg.execute();}
}
数据库表
执行Generator.main()
输入表名user:然后回车(如图代码生成成功 0.0)
代码生成成功
添加扫描mapper注解
启动springboot的application启动类:会报错,提示找不到mapper文件,我们需要在springboot启动类上添加扫描mapper的注解:
或
UserController.java中新增接口:
package com.example.mp.controller;import com.example.mp.entity.User;
import com.example.mp.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import java.util.List;/*** <p>* 前端控制器* </p>** @author jobob* @since 2020-09-11*/
@RestController
@RequestMapping("/user")
public class UserController {@Autowired()private IUserService userService;@GetMapping("/getById")public User getById() {return userService.getById(1);}}
postman测试:
上面是mybatisplus测试成功,下面我们继续测试我们自己写的sql是否成功
UserMapper
package com.example.mp.mapper;import com.example.mp.entity.User;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;import java.util.List;/*** <p>* Mapper 接口* </p>** @author jobob* @since 2020-09-11*/
//@Mapper
public interface UserMapper extends BaseMapper<User> {List<User> findAllUser();
}
使出Alt+Enter大法选择要生成的语句(0.0) (Alt+Enter大法好)
UserMapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.mp.mapper.UserMapper"><select id="findAllUser" resultType="com.example.mp.entity.User">select * from user</select>
</mapper>
太过丝滑差点忘了 上面自动生成功能来源于插件(当然过于优秀的你也可以手写0.0)
IUseService:
package com.example.mp.service;import com.example.mp.entity.User;
import com.baomidou.mybatisplus.extension.service.IService;import java.util.List;/*** <p>* 服务类* </p>** @author jobob* @since 2020-09-11*/
public interface IUserService extends IService<User> {List<User> findAllUser();
}
UseServiceImpl:
package com.example.mp.service.impl;import com.example.mp.entity.User;
import com.example.mp.mapper.UserMapper;
import com.example.mp.service.IUserService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.List;/*** <p>* 服务实现类* </p>** @author jobob* @since 2020-09-11*/
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService {@Autowiredprivate UserMapper userMapper;@Overridepublic List<User> findAllUser() {return userMapper.findAllUser();}
}
UserController:
package com.example.mp.controller;import com.example.mp.entity.User;
import com.example.mp.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import java.util.List;/*** <p>* 前端控制器* </p>** @author jobob* @since 2020-09-11*/
@RestController
@RequestMapping("/user")
public class UserController {@Autowired()private IUserService userService;@GetMapping("/getById")public User getById() {return userService.getById(1);}@PostMapping("/findAllUser")public List<User> findAllUser() {return userService.findAllUser();}
}
测试findAllUser接口:
OK! (如果各位达摩院的师兄弟觉得还可以,就请赏个赞吧 0.0 )
SpringBoot整合Mybatis-Pius(简单易懂!)相关推荐
- springboot整合mybatis实现简单的单表增删改查(完整代码可下载)
搭建项目 项目简单效果,前端效果丑的一批,主要是后端功能实现: springboot增删改查 csdn完整代码下载链接: springboot+mybatis Gitee下载地址: Gitee下载地址 ...
- springboot中整合mybatis及简单使用
springboot中整合mybatis及简单使用 1.引入依赖 2.在applicaiton.yaml中配置数据源以及mybatis 3.创建sql测试表 4.编写mapper接口和mapper.x ...
- SpringBoot整合MyBatis并实现简单的查询功能
学了SpringBoot整合MyBatis才知道什么叫做省事,想当初用SSM的时候,那配置是真的多,SpringBoot真的是太友好了,到底有多好,接下来演示一个对数据库的查询功能,然初学者的我们大开 ...
- mybatis plugins_[MyBatis] SpringBoot 整合Mybatis
现在基本上搭建一个简单的工程都是三剑客 springboot+mybatis+redis 之前整合Mybatis 都是按照SSM来,所以,这一次带来SpringBoot+MyBatis 的快速整合 p ...
- SpringBoot整合Mybatis超详细流程
SpringBoot整合Mybatis超详细流程 文章目录 SpringBoot整合Mybatis超详细流程 前言 详细流程 0.引入Mybatis 1.创建数据 2.创建程序目录 3.理解后台访问流 ...
- SpringBoot整合Mybatis(高级)
SpringBoot整合Mybatis(高级) 文章目录 SpringBoot整合Mybatis(高级) 前言 基础环境配置 增删改查 ResultMap 复杂查询 多对一 一对多 动态SQL if ...
- (一)SpringBoot 整合 MyBatis
一.工具 IDE:idea.DB:mysql 二.创建SpringBoot工程 在Idea中使用SpringInitializr模板创建SpringBoot工程,依赖选择如下: 这里也可以不选JDBC ...
- SpringBoot整合Mybatis,并实现事务控制
SpringBoot整合Mybatis,并实现事务控制 1. 在pom文件里添加相关maven文件 <parent><groupId>org.springframework.b ...
- springboot整合Mybatis例子
上一篇介绍了使用spring-data-jpa来实现数据的持久化及展示,现在使用比较流行的Mybatis来整合springboot,这里通过一个完整的例子来展示.实现数据的录入,展示以及按条件查询,同 ...
- springboot 整合mybatis plus
简单介绍下 mybatis plus,mybatis plus(简称 MP)是一个 mybatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发.提高效率而生. 本文讲解使用 ...
最新文章
- 手把手教你如何配置fiddler、并开启手机代理抓包、最详细
- window/linux composer安装/卸载
- 一张图搞定Android学习路线
- 可以获取python整数类型帮助的是什么-Python 的数值类型(整数、长整数、浮点数和复数)...
- 【路由交换实验】生成树STP(stp,rstp,mstp)
- 牛客多校 - B-Suffix Array(后缀数组)
- AAAI 2018 论文 | 蚂蚁金服公开最新基于笔画的中文词向量算法
- Python《第一次爬虫遭遇反盗链(上)》
- tkintergui-grid布局内容2
- 在自动驾驶技术上,一向自信满满的马斯克也承认了特斯拉的不足
- webmax函数高级教程整理集
- 上海电信路由器有ipv6,电脑无法获取ipv6问题记录
- 克里斯蒂安贝尔_克里斯蒂安贝尔解释为何只演3次蝙蝠侠
- CAD中插入外部参照字体会变繁体_为什么CAD图纸作为外部参照插入后有些文字消失?...
- 车牌识别EasyPR(3)——SVM模型判断车牌
- ESIM模拟器生成事件使用流程
- 阿里云KMS创建应用接入点
- VS中Qt 开发——无法解析的外部符号 QMetaObject 解决办法
- 俄勒冈大学计算机科学专业,俄勒冈大学计算机与信息科学专业怎么样?高薪热门专业等你来...
- 超详细的Socket通信原理和实例讲解(学习走起~)
热门文章
- 难以置信,这些伟大的创意竟诞生于纸巾上
- MUI 结合 HTML5+ 实现的二维码扫描功能
- 【SQLite数据库学习】 连表查询
- python3.6配置环境变量_Linux 安装Python和环境变量配置
- 图论和脑连接在阿尔茨海默症(AD)研究中的最新应用和进展——Graph Theory and Brain Connectivity in Alzheimer’s Disease
- 锦标赛算法c语言,多目标遗传算法 ------ NSGA-II (部分源码解析) 交叉操作 crossover.c(示例代码)...
- 计算机没有自带小游戏,电脑里自带游戏没有怎么办 快速找回自带游戏的方法...
- 我们为什么选择acm(无聊yy)
- “人脸识别”事故频发,“猪脸识别”却很靠谱!阿里巴巴赌对了
- verilog实现分频器总结