SpringBoot整合MyBatis-Plus(附源码)

SpringBoot整合MyBatis-Plus:从入门到精通 MyBatis-Plus(MP)是MyBatis的增强工具,旨在简化开发并提高效率,同时保持对MyBatis的无侵入性。它提供了自动生成CRUD操作、Lambda查询、主键生成策略、ActiveRecord模式、代码生成器、分页插件等功能,适用于快速开发Web应用、简化MyBatis配置等场景。MP与MyBatis的关系是增强而非取代,保留了MyBatis的所有特性并添加了更多便利功能。在SpringBoot中整合MP需要准备JDK、Maven、SpringBoot和数据库环境,并在pom.xml中添加相关 阅读详情

SpringBoot整合MyBatis-Plus

代码生成器

1.添加依赖

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.10</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.1.0</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <!-- mybatis plus 代码生成器依赖 -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.1.0</version>
        </dependency>
        <!-- 代码生成器模板 -->
        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
        </dependency>

2.配置

@Configuration
public class DataSourceConfig {

    @Bean(name = "dataSource")
    @ConfigurationProperties(prefix = "spring.datasource")
    public DataSource dataSource(){
        return  new DruidDataSource();
    }

    // 配置事物管理器
    @Bean(name="transactionManager")
    public DataSourceTransactionManager transactionManager(){
        return new DataSourceTransactionManager(dataSource());
    }
}
@Configuration
//扫描dao或者是Mapper接口
@MapperScan("com.springmybatis.spring.mybatis.mapper*")
public class MybatisPlusConfig {
    /**
     * mybatis-plus 分页插件
     */

    @Bean
    public PaginationInterceptor paginationInterceptor(){
        PaginationInterceptor page = new PaginationInterceptor();
        page.setDialectType("mysql");
        return page;
    }

}

3.编写代码生成方法

public class MpGenerator {
    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("root");
        gc.setOpen(true);
        // service 命名方式
        gc.setServiceName("%sService");
        // service impl 命名方式
        gc.setServiceImplName("%sServiceImpl");
        // 自定义文件命名,注意 %s 会自动填充表实体属性!
        gc.setMapperName("%sDao");
        gc.setXmlName("%sMapper");
        gc.setFileOverride(true);
        gc.setActiveRecord(true);
        // XML 二级缓存
        gc.setEnableCache(false);
        // XML ResultMap
        gc.setBaseResultMap(true);
        // XML columList
        gc.setBaseColumnList(false);
        mpg.setGlobalConfig(gc);


        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setUrl("jdbc:mysql://localhost:3306/miaosha?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=GMT%2B8");
        dsc.setDriverName("com.mysql.cj.jdbc.Driver");
        dsc.setUsername("root");
        dsc.setPassword("123456");
        mpg.setDataSource(dsc);


        PackageConfig pc = new PackageConfig();
        pc.setParent("com.springmybatis.spring.mybatis");//项目的包名
        pc.setEntity("entity");// 实体类
        pc.setService("service");//接口包
        pc.setMapper("mapper");//dao层
        pc.setServiceImpl("serviceImpl");//实现类
        mpg.setPackageInfo(pc);


        StrategyConfig strategy = new StrategyConfig();
        strategy.setNaming(NamingStrategy.underline_to_camel);
        strategy.setColumnNaming(NamingStrategy.underline_to_camel);
        strategy.setEntityLombokModel(true);


        // 设置逻辑删除键
        strategy.setLogicDeleteFieldName("deleted");
        // TODO 指定生成的bean的数据库表名
        strategy.setInclude("goods");
        //strategy.setSuperEntityColumns("id");
        // 驼峰转连字符
        strategy.setControllerMappingHyphenStyle(true);
        mpg.setStrategy(strategy);
        // 选择 freemarker 引擎需要指定如下加,注意 pom 依赖必须有!
        mpg.setTemplateEngine(new FreemarkerTemplateEngine());
        mpg.execute();

    }
}

执行main方法后即可看到生成的项目结构。需要注意的是,要把mapper下生成的.xml文件手动移动到resource下的mapper目录下。
在这里插入图片描述
项目源码地址:https://gitee.com/CodersCode/mybatis-plus-test

测试CRUD

表结构和表信息:
在这里插入图片描述
简单基本查询:

@RunWith(SpringRunner.class)
@SpringBootTest
public class SimpleTest {

    @Autowired
    private GoodsDao goodsDao;
    @Test
    public void select(){
        List<Goods> goods = goodsDao.selectList(null);
        goods.forEach(System.out::println);
    }
}

@Test
    public void insert(){
        Goods goods = new Goods();
        goods.setId(10l);
        goods.setGoodsTitle("test good title");
        goods.setGoodsStock(12);
        goods.setGoodsDetail("test good detail");
        goods.setGoodsImg("test good img");
        goods.setGoodsName("test good name");
        goods.setGoodsPrice(BigDecimal.valueOf(100));
        int insert = goodsDao.insert(goods);

        System.out.println("insert ok");
    }

启动查看输出:

2020-06-06 15:54:43.594  INFO 5280 --- [           main] com.alibaba.druid.pool.DruidDataSource   : {dataSource-1} inited
2020-06-06 15:54:44.562  INFO 5280 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2020-06-06 15:54:45.007  INFO 5280 --- [           main] c.s.spring.mybatis.SimpleTest            : Started SimpleTest in 3.383 seconds (JVM running for 4.617)

Goods(id=1, goodsName=iphoneX, goodsTitle=Apple iPhone X (A1865) 64GB 银色 移动联通电信4G手机, goodsImg=/img/iphonex.png, goodsDetail=Apple iPhone X (A1865) 64GB 银色 移动联通电信4G手机, goodsPrice=8765.00, goodsStock=10000)
Goods(id=2, goodsName=华为Meta9, goodsTitle=华为 Mate 9 4GB+32GB版 月光银 移动联通电信4G手机 双卡双待, goodsImg=/img/meta10.png, goodsDetail=华为 Mate 9 4GB+32GB版 月光银 移动联通电信4G手机 双卡双待, goodsPrice=3212.00, goodsStock=-1)
Goods(id=3, goodsName=iphone8, goodsTitle=Apple iPhone 8 (A1865) 64GB 银色 移动联通电信4G手机, goodsImg=/img/iphone8.png, goodsDetail=Apple iPhone 8 (A1865) 64GB 银色 移动联通电信4G手机, goodsPrice=5589.00, goodsStock=10000)
Goods(id=4, goodsName=小米6, goodsTitle=小米6 4GB+32GB版 月光银 移动联通电信4G手机 双卡双待, goodsImg=/img/mi6.png, goodsDetail=小米6 4GB+32GB版 月光银 移动联通电信4G手机 双卡双待, goodsPrice=3212.00, goodsStock=10000)

在这里插入图片描述
更新和删除同样测试即可实现。
复杂条件查询:
使用QueryWrapper:
举例:
1)查询goods_name中包含iphone的所有商品

@Test
    public void selectByWrapepr(){
        QueryWrapper<Goods> queryWrapper = new QueryWrapper();
        // QueryWrapper<Object> query = Wrappers.query();  和上面一样
        queryWrapper.like("goods_name","iphone");

        List<Goods> goods = goodsDao.selectList(queryWrapper);
        goods.forEach(System.out::println);
    }

查询结果如下:

2020-06-07 09:20:16.112  INFO 3768 --- [           main] c.s.spring.mybatis.SimpleTest            : Started SimpleTest in 3.544 seconds (JVM running for 4.887)

Goods(id=1, goodsName=iphoneX, goodsTitle=Apple iPhone X (A1865) 64GB 银色 移动联通电信4G手机, goodsImg=/img/iphonex.png, goodsDetail=Apple iPhone X (A1865) 64GB 银色 移动联通电信4G手机, goodsPrice=8765.00, goodsStock=10000)
Goods(id=3, goodsName=iphone8, goodsTitle=Apple iPhone 8 (A1865) 64GB 银色 移动联通电信4G手机, goodsImg=/img/iphone8.png, goodsDetail=Apple iPhone 8 (A1865) 64GB 银色 移动联通电信4G手机, goodsPrice=5589.00, goodsStock=10000)


2020-06-07 09:20:16.485  INFO 3768 --- [extShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor  : Shutting down ExecutorService 'applicationTaskExecutor'
2020-06-07 09:20:16.595  INFO 3768 --- [extShutdownHook] com.alibaba.druid.pool.DruidDataSource   : {dataSource-1} closed

其他条件查询均可根据QueryWrapper提供的方法实现。

5套完整springboot+mybatis源码下载只供学习之用.rar 5套完整springboot+mybatis源码下载只供学习之用,一套登录,一套权限,一套博客,一套..... 立即下载

相关推荐

基于springboot+mybatis-plus+mysql+redis的NBA球员数据管理系统完整源码+说明.zip

【资源说明】 1、该资源内项目代码都是经过测试运行成功,功能正常的情况下才上传的,请放心下载使用。 2、适用人群:主要针对计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、数学、电子信息等)的同学或企业员工下载使用,具有较高的学习借鉴价值。 3、不仅适合小白学习实战练习,也可作为大作业、课程设计、毕设项目、初期项目立项演示等,欢迎下载,互相学习,共同进步!

springboot整合mybatis+mybatis-plus,附源码地址

前言 现在搞java的都知道mybatis-plus这个神器了吧?能解决很多curd功能,超快,用的超爽。之前公司我说这是个神器得时候我想引进去,项目组老大说”本来就是很简单得功能,干嘛还要工具,多此一举“。原话 我一个字没改!当时我看出他的意思和表情,他自己不想学,我也随便了。其实内心里很bs他的。现在这个公司就在用这个东西,只能说贼爽,很多时候可以不用为一些小而简单的功能加班。 然后特此记录一下,可以给未来复习也好,有朋友学习也好。 开始 项目结构 sql表 /* 用户表 */ CREATE

Ambitiouss的博客 1万+

南京邮电大学《数学实验》模块二(函数的迭代)参考答案

【代码】南京邮电大学《数学实验》模块二(函数的迭代)参考答案。

qq_1293730064的博客 3万+

Mybatis-Plus 3.5.2代码生成

mybatis

ZeroKoop 610

别再傻傻分不清!5分钟搞懂倾斜摄影里‘地面分辨率’和‘模型精度’到底啥关系

本文深入解析倾斜摄影中‘地面分辨率’与‘模型精度’的关系,帮助读者快速理解两者的本质区别与内在关联。通过实战案例和公式计算,详细说明如何从航飞设计到精度验证全流程控制,避免常见认知误区,并针对不同应用场景提供精度需求建议。

weixin_33700350的博客 476

别再死记硬背了!用LTspice和Simulink仿真,5分钟搞懂巴特沃斯、切比雪夫、贝塞尔滤波器的区别

本文通过LTspice和Simulink仿真工具,直观对比了巴特沃斯、切比雪夫和贝塞尔滤波器的特性差异。从通带波纹、过渡带陡峭度到相位线性度,详细解析了三种经典滤波器的设计哲学与应用场景,帮助工程师和学生快速掌握滤波器选型技巧,提升电路设计效率。

weixin_33910191的博客 523

基于Springboot+Mysql的4S店车辆管理系统【毕业论文,源码】

基于java语言设计并实现了4S店车辆系统。该系统基于B/S即所谓浏览器/服务器模式,应用java技术,选择MySQL作为后台数据库。系统主要包括首页、个人中心、销售员管理、维修员管理、客户管理、供应商信息管理、保险公司管理、车辆信息管理、物资信息管理、车辆销售管理、车辆维修管理、营业统计管理、销售统计管理等功能模块。关键词:4S店车辆管理;java;MySQL数据库遵循软件常规开发流程,首先针对系统选取适用的语言和开发平台,根据需求分析制定模块并设计数据库结构,再根据系统总体功能模块的设计绘制系统的功能模

weixin_47964305的博客 663

huggingface 镜像站推荐

在做 Ai 应用开发或者学习的时候,我们经常需要下载各种模型,而 huggingface 的模型下载速度很慢或者根本就连不上,这里推荐一个 huggingface 的镜像站,速度很快,可以大大提高我们的效率。

t951984189的博客 1万+

基于Springboot+vue+mybatis框架的建材运营管理系统的设计与实现【附项目源码】分享

随着信息技术的快速发展,各行各业都在积极地进行数字化转型。建材行业作为传统行业之一,也急需通过引入先进的信息化技术来提升运营效率和管理水平。本需求文档旨在详细阐述一个基于Springboot、Vue和MyBatis框架的建材运营管理系统的设计与实现,该系统将为建材企业提供一个高效、便捷、安全的运营管理平台。

weixin_43894652的博客 1392

手把手教你使用transciver-ip核的配置

手把手教你使用transciver-ip核的配置

u012938458的博客 5411

数据库系统概论第五版课后习题答案第十二章

对元组的插入、删除、修改;语义检查的具体做法是,DBMS读取数据字典,检查是否存在与该语句中的表、视图或索引等要创建的对象相同的对象名,检查该用户是否具有创建数据库对象的权限。答:操作系统提供的封锁机制和DBMS的封锁机制在封锁对象、封锁对象的状态、封锁的粒度、及封锁的类型上存在很大的差别,操作系统的封锁机制不能直接应用在DBMS中,DBMS必须重新设计,来满足复杂的封锁需求。数据库的建立和维护包括数据库的初始建立、数据的转换、数据库的转储和恢复、数据库的重组织和重构造以及性能监测分析等功能。

wenling54321的博客 693

SpringBoot 整合 Mybatis-Plus超详细流程(附源码)

SpringBoot 整合 Mybatis-Plus一、学习官网二、MybatisPlus学习2.1 ORM思想2.2 Mybatis优点/缺点2.2.1 优点:2.2.2 缺点:2.3 MybatisPlus介绍三、SpringBoot创建项目四、添加相关依赖4.1打开pom.xml文件 -> 使用EditStarter 插件添加依赖4.2添加的依赖五、准备数据库,表——》配置yml配置文件5.1 表5.2将.properties配置文件修改成.yml配置文件5.3 配置内容六、实现映射-创建实体类

1881

基于深度学习的行人车辆检测与计数系统(UI界面+YOLOv8/v7/v6/v5代码+训练数据集)

从YOLOv1到最新的YOLOv8,其网络结构、训练策略和损失函数不断优化,性能持续提升。image_path, _ = QFileDialog.getOpenFileName(self, "选择图片文件", "", "Image Files (*.jpg *.png *.jpeg *.bmp)")video_path, _ = QFileDialog.getOpenFileName(self, "选择视频文件", "", "Video Files (*.mp4 *.avi *.mov *.mkv)")

YOLO 225

SpringBoot(9) 整合Mybatis-Plus代码生成器(附源码)

可参考Mybatis-Plus官方文档学习更多:https://baomidou.oschina.io/mybatis-plus-doc/#/generate-code 下面分享一个最近在springboot项目使用到的代码生成器 Mybatis-Plus 1、导入依赖: &lt;!--springboot-web支持: 1、web mvc; 2、restful; 3、jackjson支持; ...

郑清 6157

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Spring Boot整合Mybatis-Plus和PageHelper分页插件,附项目源码

1 pom.xml配置文件 &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="h

一条吃软饭的软狗 1万+

SpringBoot整合Mybatis-Plus,代码生成器Generator以及Swagger(附源码、图文学习、Postman、ApiPost第三方工具的使用)

一、什么是Swagger3,有什么作用? 常用的方法 方法名称 作用 @Api() $1600 @ApiOperation() $12 @ApiParam() $1 @ApiModel() $1 @ApiModelProperty() $1 @ApiIgnore() $1 @ApiImplicitParam() $1 二、SpringBoot整合Swagger3实现的流程 1、创建SpringBoot项目 2、导入Swagger3依赖 3、创建接口,实现功能 4、

m0_55586329的博客 1993

【SpringBoot】——SpringBoot 整合mybatis-plus 单数据源 & 多数据源,附源码

以下配置mybatisplus 单数据源和多数据源这种方式不好,还是按照之前配置mybatis的方式配置效果更佳。 下边这种方法适用于 数据库读写分离。 // 单数据源:https://gitee.com/cyf2018/mx-springboot-mybatisPlus.git // 多数据源:https://gitee.com/cyf2018/mx-springboot-mybatisp...

weixin_37603867的博客 688

Java Web web铁路订票管理系统系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】

开源免费分享Java Web web铁路订票管理系统系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】可提供说明文档 可以通过。AIGC**技术包括:MySQL、VueJS、ElementUI、(Python或者Java或者.NET)等等。专业毕业设计指导、项目源码开发、技术答疑解惑,用学生视角理解学生需求,提供最贴心的技术帮助。遇见即是缘,欢迎交流,你别地能找到的源码我都有!可以直接联系我查看详细视频,个性签名!查看我主页的置顶文章,文末领取。

w707050的博客 87

SpringBoot集成Mybatis Plus【附源码】

Mybatis plus是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。

笑小枫 2581

SpringBoot整合MyBatis-Plus

前言 使用MyBatis-Plus 可以减少大量的开发时间,单表的增删改查可以不用写 sql 语句。 本博客主要说明整合需要特别注意的地方。 本博客分别构建了一个单工程项目以及一个多工程项目,主要分析单工程项目的细节。 如有不正确的地方,欢迎指正。 源码 GitHub地址:https://github.com/intomylife/SpringBoot 环境 ...

我的博客 2万+

Springboot+MyBatis-plus+postgresSQL 的整合

磨叨一下 MyBatis-plus 请参看https://mp.baomidou.com/,之前也有写过一个较简单的入门级文章,可以参看 在整合的过程中遇到了一些坑,来扒一扒。 (1) 首先在利用MyBatis-plus-generator 的AutoGenerator类生成代码阶段,死活不生成相应的类。换成MYSQL也是OK的, Oracle也是没有问题。写了一个PostresSQL的直连操作也...

傲视苍穹 2万+

SpringBoot2整合MyBatis-Plus

SpringBoot2 整合 MyBatis-Plus,超级详细的mybatis-plus教程!!!立马教你如何上手!!! 1、什么是MyBatis-Plus **MyBatis-Plus(简称 MP)**是一个MyBatis的增强工具,在Mybatis的基础上只做增强不做改变,为简化开发、提高效率而生。(最重要的是MyBatis-Plus是国人做出来的,真牛逼!!!) ...

maogenb的博客 1832

MyBatis-Plus和SpringBoot的整合

简介 MyBatis-Plus是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 一、MyBatis-Plus和SpringBoot整合应用 1.1 项目依赖 在原项目依赖上,加上下面依赖 <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-start

clyu的博客 3165

SpringBoot整合MyBatis-Plus3.1详细教程

一.说明 Mybatis-Plus是一个Mybatis框架的增强插件,根据官方描述,MP只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑.并且只需简单配置,即可快速进行 CRUD 操作,从而节省大量时间.代码生成,分页,性能分析等功能一应俱全,最新已经更新到了3.1.1版本了,3.X系列支持lambda语法,让我在写条件构造的时候少了很多的"魔法值",从代码结构上更简洁了. 二.项目环境...

weixin_34358092的博客 1万+
上一篇: idea奇怪问题----点击run后没反应,按钮由绿变灰没有调起控制台
下一篇: Spring Boot学习笔记(四)
CodersCoder
博客等级 码龄10年 90粉丝 258原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值