SpringBoot整合MyBatisPlus实操
1.SpringBoot整合MyBatis1.1整合案例
需求:整合SpringBoot和Mybatis,向数据库中查询数据。
项目结构:
1.1.1创建数据库和表-- 创建数据库DROP DATABASE IF EXISTS springboot_mybatis;CREATE DATABASE springboot_mybatis;USE springboot_mybatis; -- 创建表CREATE TABLE monster(`id` INT NOT NULL AUTO_INCREMENT,`age` INT NOT NULL,`birthday` DATE DEFAULT NULL,`email` VARCHAR(255) DEFAULT NULL,`gender` CHAR(1) DEFAULT NULL,`name` VARCHAR(255) DEFAULT NULL,`salary` DOUBLE NOT NULL,PRIMARY KEY(`id`) )CHARSET=utf8;
插入测试数据:
1.1.2引入依赖
在pom.xml中引入mybatis及相关的依赖 spring-boot-starter-parent org.springframework.boot 2.5.3 org.springframework.boot spring-boot-starter-web org.mybatis.spring.boot mybatis-spring-boot-starter 2.2.2 mysql mysql-connector-java org.springframework.boot spring-boot-configuration-processor org.projectlombok lombok org.springframework.boot spring-boot-starter-test com.alibaba druid 1.1.17 1.1.3配置数据源
在resource/application.yml中配置数据源,并完成SpringBoot项目启动测试 spring: datasource: #配置数据源 url: jdbc:mysql://localhost:3306/springboot_mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8 username: root password: 123456 driver-class-name: com.mysql.cj.jdbc.Driverserver: port: 9090
创建配置类,设置Druid数据源:
这里如果引入的依赖是druid-starter,可以直接在yml文件中配置 package com.li.springboot.mybatis.config; import com.alibaba.druid.pool.DruidDataSource;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration; import javax.sql.DataSource; /** * @author 李 * @version 1.0 */@Configurationpublic class DruidDataSourceConfig { @ConfigurationProperties("spring.datasource") @Bean public DataSource dataSource() { DruidDataSource druidDataSource = new DruidDataSource(); return druidDataSource; }}1.1.4指定mapper.xml路径
在application.yml文件中配置mybatis,指定要扫描的mapper.xml文件的路径
在ssm整合中,这一步也是在applicationContext.xml容器文件中指定 mybatis: mapper-locations: classpath:mapper/*.xml #指定要扫描的mapper.xml路径1.1.5代码实现
(1)创建JavaBean--Monster.java,用于表映射 package com.li.springboot.mybatis.bean; import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor; import java.util.Date; /** * @author 李 * @version 1.0 */@Data@NoArgsConstructor@AllArgsConstructorpublic class Monster { private Integer id; private Integer age; private Date birthday; private String email; private String name; private String gender; private Double salary;}
(2)创建mapper接口,用于声明方法 package com.li.springboot.mybatis.mapper; import com.li.springboot.mybatis.bean.Monster;import org.apache.ibatis.annotations.Mapper; /** * @author 李 * @version 1.0 * 使用注解@mapper,就可以将mapper接口对象注入容器 */@Mapper//除了使用注解,也可以直接指定要扫描的包public interface MonsterMapper { //根据id查询数据记录 public Monster getMonsterById(Integer id);}
(3)在resource/mapper目录下创建接口对应的mapper.xml文件,实现声明的方法 <?xml version="1.0" encoding="UTF-8" ?>
(4)进行测试:
如果要写测试类,一定要写主程序 package com.li.springboot.mybatis; import com.li.springboot.mybatis.bean.Monster;import com.li.springboot.mybatis.mapper.MonsterMapper;import org.junit.jupiter.api.Test;import org.springframework.boot.test.context.SpringBootTest; import javax.annotation.Resource; /** * @author 李 * @version 1.0 */@SpringBootTestpublic class ApplicationTest { @Resource private MonsterMapper monsterMapper;//注入的实际上是它的代理类 //测试MonsterMapper接口是否可用 @Test public void getMonsterMapper() { Monster monster = monsterMapper.getMonsterById(1); System.out.println("monster=" + monster); }}
测试结果:成功从数据库中获取信息。
接下来的Service、Controller层和ssm没有多大区别,这里不再赘述 1.1.6补充-对mybatis的配置SpringBoot对mybatis的配置有两种方式:
(1)使用传统方式配置,即使用mybatis-config.xml。不过要先在application.yml文件中指定mybatis配置文件的路径。 mybatis: config-location: #指定mybatis-config.xml文件的路径
(2)直接使用application.yml文件进行配置,例如: mybatis: type-aliases-package: com.li.springboot.mybatis.bean #指定别名 configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #指定标准的日志输出两种方式的选择:如果配置比较简单,可以在yml中直接配置如果配置内容较多,可以单独地做一个配置文件 1.2注意事项和使用细节
SpringBoot中日期默认是格林尼治标准时间,和中国标准时相差8小时,可以通过注解@JsonFormat解决此问题:
其中pattern表示日期格式,timezone表示时区,GMT是格林尼治时间 2.SpringBoot整合MyBatis-Plus2.1MyBatis-Plus基本介绍
MyBatisPlus官方文档 MyBatis-Plus,简称MP,是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。 强大的CRUD操作: 内置了通用Mapper、通用Service ,通过少量配置即可实现单表大部分CRUD操作,更有强大的条件构造器,满足各类需求。 2.2整合案例
需求:整合SpringBoot和MyBatis-Plus,向数据库中查询数据。 2.2.1创建数据库和表
略,表结构同上。
2.2.2引入依赖
pom.xml文件中引入mybatis-plus starter和其他依赖。 spring-boot-starter-parent org.springframework.boot 2.5.3 org.springframework.boot spring-boot-starter-web com.baomidou mybatis-plus-boot-starter 3.4.3 mysql mysql-connector-java org.springframework.boot spring-boot-configuration-processor org.projectlombok lombok org.springframework.boot spring-boot-starter-test com.alibaba druid 1.1.17 2.2.3配置数据源
(1)在resource/application.yml中配置数据源 server: port: 9090spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/springboot_mybatisplus?useSSL=true&useUnicode=true&characterEncoding=UTF-8 username: root password: 123456
(2)创建配置类,设置Druid数据源:这一步和mybatis整合相同,见上1.1.3操作 2.2.4代码实现
(1)创建JavaBean--Monster.java,用于表映射(同1.1.4的操作,略)
(2)创建mapper接口,用于声明方法
相比于mybatis需要自己声明方法, MP提供了一个通用的BaseMapper ,有很多通用的方法,通过继承,我们就可以直接使用,简化开发 package com.li.springboot.mybatisplus.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;import com.li.springboot.mybatisplus.bean.Monster;import org.apache.ibatis.annotations.Mapper; /** * @author 李 * @version 1.0 * BaseMapper是MyBatisPlus内置的通用Mapper,提供了很多的方法 * 如果它提供的方法不能满足业务需求,我们可以在这里开发新的方法 */@Mapperpublic interface MonsterMapper extends BaseMapper { }
如果在这一步没有自定义的接口方法,就不需要使用Mapper.xml文件实现声明
(3)开发Service
MP也提供了一个通用的Service接口 ,里面也提供了很多方法 package com.li.springboot.mybatisplus.service; import com.baomidou.mybatisplus.extension.service.IService;import com.li.springboot.mybatisplus.bean.Monster; /** * @author 李 * @version 1.0 * 1.在mybatis中,是在MonsterService声明方法,然后在其实现类实现 * 2.而在MyBatis-Plus中,我们可以通过继承父接口:IService,从而使用里面的很多方法 * 3.如果它提供的方法不能满足业务需求,再开发新的方法 */@Servicepublic interface MonsterService extends IService {}
注意:如果在业务Service接口声明了自定义方法,通常会创建一个实现类实现接口方法,问题是:由于业务Service接口继承了IService接口,那么业务Service的实现类要同时实现两个接口的方法才行,非常麻烦。
解决方案是:业务实现类通过继承ServiceImpl类解决问题。ServiceImpl类是MyBatis-Plus提供的一个类,它已经实现了IService的方法。这样业务实现类就只需要实现业务Service自定义的方法。
业务实现类MonsterServiceImpl: package com.li.springboot.mybatisplus.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;import com.li.springboot.mybatisplus.bean.Monster;import com.li.springboot.mybatisplus.mapper.MonsterMapper;import com.li.springboot.mybatisplus.service.MonsterService; /** * @author 李 * @version 1.0 */public class MonsterServiceImpl extends ServiceImpl implements MonsterService { //通过继承ServiceImpl,这个实现类中就只用实现业务Service自定义的方法}
controller层的实现和mybatis的大同小异,这里就不写了 2.2.5补充-对MP的配置MyBatis-Plus的配置和MyBatis配置几乎没有区别,在SpringBoot中,同样可以通过如下方式进行配置:
(1)使用传统的配置文件配置,不过要先在application.yml文件中指定配置文件的路径: mybatis-plus: config-location: xxx #指定mp配置文件的路径
(2)直接使用application.yml文件进行配置,例如: mybatis-plus: configuration: # 进行mybatis-plus配置,配置项和mybatis一样 log-impl: org.apache.ibatis.logging.stdout.StdOutImpl@MapperScan注解(修饰于主程序)可以替代@Mapper(修饰于mapper接口),basePackages属性可以接收多个值 2.3注意事项和使用细节
MyBatis-Plus的注解
(1)@TableName
描述:表名注解,标识实体类对应的表。如果实体类的类名和表名一致,则该注解可以省略,否则需要通过@TableName指定表名
基金这应该是一个利好消息会不会有人就这样想,今天跑了,等明天中阴时再进,结果明天是小阳小阴呢?这是一位铁粉朋友的留言,谢谢这位铁粉朋友。我觉得这样的想法是错误的,不管明天是涨还是跌,即使今天卖出以后,明天
韩媒传来消息,三星开发第二代3nm,台积电3nm被高估了?高端芯片市场的竞争来到了3nm,台积电和三星展开了角逐,其中良率问题是竞争的关键,决定了能拿到多少客户订单。有韩媒传来消息,表示三星已经在开发第二代3nm了,而台积电的3nm并没有
柏林世界杯湖北名将王宗源实现双人大满贯冲刺全满贯目标巴黎在国际跳水界,王宗源以分外抢眼的表现已步入名将之列。在10月举行的跳水世界杯上,首次参赛的王宗源完成男子单双人三米板冠军的包揽。至此,他已实现东京奥运会布达佩斯世锦赛柏林世界杯三大
遇见甘南附记第一次夭折的甘南之行自2012年起,我每年都要拿出几个月的时间去领略一下祖国大地山水风光,或自驾游,或背包自由行,没有参过团。因为我不喜欢那种上车睡觉,下车尿尿,到此一游,景点拍照赶考式的有时间约束的
阿坝州松潘县民宿产业走出乡村振兴新路子来源原创稿怿宿古道牧风精品民宿。松潘县文化体育和旅游局供图光和云朵民宿。松潘县文化体育和旅游局供图光和云朵民宿。松潘县文化体育和旅游局供图冬日,走进阿坝州松潘县,雪山之下,连片森林
伊万娜诺尔现身广场,穿红色方块连体装搭黑直筒高跟鞋大方有型近日,美国纽约,克罗地亚足球宝贝伊万娜诺尔(IvanaKnoll)在当地广场进行拍摄活动。当天,她身穿克罗地亚标志球衣款式的服装亮相,红色的方块连体装,搭配黑色的直筒高跟鞋,看起来
一个人最好的修行,是从选择开始的!生活在后疫情时代的人们,都面临着前所未有的挑战与考验。有的人一出生就在罗马,可是有更多人一出生就遇到了小奥的猛烈撞击。人的一生就是在一次次的危机中前行,在一次次的选择中修行。每个人
这才是最得体的过年打扮裤不遮鞋面裙不上膝盖,美得高级古希腊哲学家阿柏拉图曾经说过当美的灵魂与美的外表和谐地融为一体,人就会看到世界上最完善的美。简短的一句话告诉我们,仅仅拥有好看的外表是不够的,还要拥有美好的心灵,并且要通过得体的着
把气质穿出来真的没那么难,瞧瞧她们这样穿多洋气,高级时髦过年倒计时了,女生们都纷纷跑理发店做发型去了,又烫又染,就希望回家过年的时候变得更加漂亮一些,想要变得漂亮好看,光做发型可不行,重点还是看衣服穿搭,搭配的好了就变得漂亮大气。每一个
胖东来为什么开不进北上广不知道从什么时候起,我的河南籍朋友们每次回老家,都像是去卡塔尔度假。短短两三天的行程,四五页的购物小票,满满几后备箱的战利品,足够他们在朋友圈和小红书上晒足180天。仔细一打听才知
查干湖鱼香四海渔家姐妹新年卖鱼忙曲丽敏(居中)带游客们游玩。受访者供图(新春走基层)查干湖鱼香四海渔家姐妹新年卖鱼忙中新网松原1月8日电(高龙安)晚上的查干湖渔场灯火通明,曲丽杰和伙计们要在这里选出二百条二十来斤