SpringBoot(整合MyBatis + MyBatis-Plus + MyBatisX插件使用)
文章目录
- 1.整合MyBatis
- 1.需求分析
- 2.数据库表设计
- 3.数据库环境配置
- 1.新建maven项目
- 2.pom.xml 引入依赖
- 3.application.yml 配置数据源
- 4.Application.java 编写启动类
- 5.测试
- 6.配置类切换druid数据源
- 7.测试数据源是否成功切换
- 4.Mybatis基础配置
- 1.编写映射表的bean
- 2.MonsterMapper.java 编写mapper接口
- 3.MonsterMapper.xml 编写mapper.xml实现mapper接口
- 4.application.yml 扫描mapper.xml配置文件的位置
- 5.测试
- 5.MyBatis高级配置
- 1.方式一:在application.yml中配置mybatis.config-location指定mybatis-config.xml配置文件的位置
- 2.方式二:直接在application.yml中配置
- 6.继续编写Service层和Controller层
- 1.MonsterService.java
- 2.MonsterServiceImpl.java
- 3.测试
- 4.MonsterController.java
- 5.测试
- 6.解决时间问题
- 7.完整文件目录
- 2.整合MyBatis-Plus
- 1.MyBatis-Plus基本介绍
- 2.数据库表设计
- 3.数据库环境配置
- 1.创建maven项目
- 2.pom.xml 导入依赖
- 3.application.yml 配置数据源
- 4.DruidDataSourceConfig.java 配置类切换druid数据源
- 5.编写启动类Application.java,测试运行
- 4.MyBatis-Plus基础配置
- 1.编写映射表的bean
- 2.MonsterMapper.java 编写Mapper接口
- 3.测试接口方法使用
- 5.MyBatis-Plus高级配置
- application.yml 进行配置
- 6.继续编写Service层和Controller层
- 1.MonsterService.java
- 2.MonsterServiceImpl.java
- 3.测试
- 4.细节说明
- 5.MonsterController.java
- 7.细节说明
- 1.@MapperScan 扫描包下的所有Mapper
- 启动类配置注解
- 2.@TableName bean的类名与表名不一致时使用
- image-20240317200951971
- 3.MyBatis引入了哪些依赖
- 8.MyBatisX快速开发
- 1.安装插件
- 2.使用方式
- 1.挑一个带小鸟的方法
- 2.直接alt + Enter
- 3.生成sql语句
- 4.查看生成的方法
- 5.点击左边的小鸟就可以直接跳转到指定方法或者xml
- 9.完整文件目录
- 10.MyBatis-Plus小结
1.整合MyBatis
1.需求分析
2.数据库表设计
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`) ); SELECT * FROM `monster`; insert into monster values(null, 20, '2000-11-11', 'nmw@sohu.com', '男', '牛魔王', 5000.88); insert into monster values(null, 10, '2011-11-11', 'bgj@sohu.com', '女', '白骨精', 2000.00);
3.数据库环境配置
1.新建maven项目
2.pom.xml 引入依赖
spring-boot-starter-parent org.springframework.boot 2.5.3 org.springframework.boot spring-boot-starter-web org.projectlombok lombok true org.springframework.boot spring-boot-starter-test test org.springframework.boot spring-boot-configuration-processor true org.springframework.boot spring-boot-starter-data-jdbc mysql mysql-connector-java runtime com.alibaba druid 1.1.17 org.mybatis.spring.boot mybatis-spring-boot-starter 2.2.2
3.application.yml 配置数据源
- 数据库名
- 用户名
- 密码
- 驱动是mysql8的(因为上面使用了版本仲裁)
server: port: 8080 spring: datasource: #配置数据源 url: jdbc:mysql://localhost:3306/springboot_mybatis?useSSL=false&useUnicode=true&characterEncoding=UTF-8 username: root password: root driver-class-name: com.mysql.cj.jdbc.Driver
4.Application.java 编写启动类
package com.sun.springboot.mybatis; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; /** * @author 孙显圣 * @version 1.0 */ @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
5.测试
package com.sun.springboot.mybatis; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.jdbc.core.JdbcTemplate; import javax.annotation.Resource; /** * @author 孙显圣 * @version 1.0 */ @SpringBootTest public class ApplicationTest { //依赖注入 @Resource private JdbcTemplate jdbcTemplate; @Test public void t1() { //查看目前数据源 System.out.println(jdbcTemplate.getDataSource().getClass()); } }
6.配置类切换druid数据源
package com.sun.springboot.mybatis.config; import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.support.http.StatViewServlet; import com.alibaba.druid.support.http.WebStatFilter; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.boot.web.servlet.ServletRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import javax.sql.DataSource; import java.sql.SQLException; import java.util.Arrays; /** * @author 孙显圣 * @version 1.0 */ @Configuration public class DruidDataSourceConfig { //注入一个德鲁伊数据源 @ConfigurationProperties("spring.datasource") //读取yaml配置文件的参数,获取数据源配置 @Bean public DataSource dataSource() throws SQLException { DruidDataSource druidDataSource = new DruidDataSource(); druidDataSource.setFilters("stat, wall"); //开启sql监控 return druidDataSource; } //配置德鲁伊监控sql功能 @Bean public ServletRegistrationBean statViewServlet() { StatViewServlet statViewServlet = new StatViewServlet(); ServletRegistrationBean registrationBean = new ServletRegistrationBean(statViewServlet, "/druid/*"); //配置登录监控页面用户名和密码 registrationBean.addInitParameter("loginUsername", "root"); registrationBean.addInitParameter("loginPassword", "root"); return registrationBean; } //配置webStatFilter @Bean public FilterRegistrationBean webStatFilter() { WebStatFilter webStatFilter = new WebStatFilter(); FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(webStatFilter); //默认对所有 URL 请求监控 filterRegistrationBean.setUrlPatterns(Arrays.asList("/*")); //排除 URL filterRegistrationBean.addInitParameter ("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"); return filterRegistrationBean; } }
7.测试数据源是否成功切换
package com.sun.springboot.mybatis; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.jdbc.core.JdbcTemplate; import javax.annotation.Resource; /** * @author 孙显圣 * @version 1.0 */ @SpringBootTest public class ApplicationTest { //依赖注入 @Resource private JdbcTemplate jdbcTemplate; @Test public void t1() { //查看目前数据源 System.out.println(jdbcTemplate.getDataSource().getClass()); } }
4.Mybatis基础配置
1.编写映射表的bean
package com.sun.springboot.mybatis.bean; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import java.util.Date; /** * @author 孙显圣 * @version 1.0 */ @Data public class Monster { private Integer id; private Integer age; @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8") private Date birthday; private String email; private String name; private String gender; private Double salary; }
2.MonsterMapper.java 编写mapper接口
- 使用注解注入容器
package com.sun.springboot.mybatis.mapper; import com.sun.springboot.mybatis.bean.Monster; import org.apache.ibatis.annotations.Mapper; /** * @author 孙显圣 * @version 1.0 */ @Mapper //将接口注入容器 public interface MonsterMapper { public Monster getMonsterById(Integer id); }
3.MonsterMapper.xml 编写mapper.xml实现mapper接口
- 使用namespace指定要实现的接口
select * from monster where id = #{id}
4.application.yml 扫描mapper.xml配置文件的位置
- 扫描类路径下mapper文件夹下的所有文件
mybatis: #指定要扫描的mapper.xml mapper-locations: classpath:mapper/*.xml
5.测试
package com.sun.springboot.mybatis; import com.sun.springboot.mybatis.bean.Monster; import com.sun.springboot.mybatis.mapper.MonsterMapper; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.jdbc.core.JdbcTemplate; import javax.annotation.Resource; /** * @author 孙显圣 * @version 1.0 */ @SpringBootTest public class ApplicationTest { //依赖注入 @Resource private JdbcTemplate jdbcTemplate; //注意这里注入的是MonsterMapper的代理对象 @Resource private MonsterMapper monsterMapper; @Test public void t1() { //查看目前数据源 System.out.println(jdbcTemplate.getDataSource().getClass()); } @Test public void t2() { //测试mybatis Monster monsterById = monsterMapper.getMonsterById(1); System.out.println(monsterById); } }
5.MyBatis高级配置
1.方式一:在application.yml中配置mybatis.config-location指定mybatis-config.xml配置文件的位置
2.方式二:直接在application.yml中配置
mybatis: #指定要扫描的mapper.xml mapper-locations: classpath:mapper/*.xml #配置类型别名包,这样只要在这个包下的类型都可以简写 type-aliases-package: com/sun/springboot/mybatis/bean #输出日志 configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
6.继续编写Service层和Controller层
1.MonsterService.java
package com.sun.springboot.mybatis.service; import com.sun.springboot.mybatis.bean.Monster; /** * @author 孙显圣 * @version 1.0 */ public interface MonsterService { public Monster getMonsterById(Integer id); }
2.MonsterServiceImpl.java
package com.sun.springboot.mybatis.service.Impl; import com.sun.springboot.mybatis.bean.Monster; import com.sun.springboot.mybatis.mapper.MonsterMapper; import com.sun.springboot.mybatis.service.MonsterService; import org.springframework.stereotype.Service; import javax.annotation.Resource; /** * @author 孙显圣 * @version 1.0 */ @Service public class MonsterServiceImpl implements MonsterService { @Resource private MonsterMapper monsterMapper; //返回代理对象 @Override public Monster getMonsterById(Integer id) { return monsterMapper.getMonsterById(id); } }
3.测试
package com.sun.springboot.mybatis; import com.sun.springboot.mybatis.bean.Monster; import com.sun.springboot.mybatis.mapper.MonsterMapper; import com.sun.springboot.mybatis.service.MonsterService; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.jdbc.core.JdbcTemplate; import javax.annotation.Resource; /** * @author 孙显圣 * @version 1.0 */ @SpringBootTest public class ApplicationTest { //依赖注入 @Resource private MonsterService monsterService; @Test public void getMonsterById() { Monster monsterById = monsterService.getMonsterById(1); System.out.println(monsterById); } }
4.MonsterController.java
package com.sun.springboot.mybatis.Controller; import com.sun.springboot.mybatis.bean.Monster; import com.sun.springboot.mybatis.service.MonsterService; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.ResponseBody; import javax.annotation.Resource; /** * @author 孙显圣 * @version 1.0 */ @Controller public class MonsterController { @Resource private MonsterService monsterService; @GetMapping("/getMonster/{id}") //路径参数的请求 @ResponseBody //响应一个json public Monster getMonsterById(@PathVariable("id") Integer id) { Monster monsterById = monsterService.getMonsterById(id); return monsterById; } }
5.测试
6.解决时间问题
7.完整文件目录
2.整合MyBatis-Plus
1.MyBatis-Plus基本介绍
2.数据库表设计
CREATE DATABASE `springboot_mybatisplus`; USE `springboot_mybatisplus`; 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`) ); SELECT * FROM `monster`; INSERT INTO monster VALUES(NULL, 20, '2000-11-11', 'xzj@sohu.com', '男', ' 蝎 子 精 ', 15000.88); INSERT INTO monster VALUES(NULL, 10, '2011-11-11', 'ytj@sohu.com', '女', ' 玉 兔 精 ', 18000.88);
3.数据库环境配置
1.创建maven项目
2.pom.xml 导入依赖
spring-boot-starter-parent org.springframework.boot 2.5.3 org.springframework.boot spring-boot-starter-web org.projectlombok lombok true org.springframework.boot spring-boot-starter-test test org.springframework.boot spring-boot-configuration-processor true mysql mysql-connector-java runtime com.alibaba druid 1.1.17 com.baomidou mybatis-plus-boot-starter 3.4.3
3.application.yml 配置数据源
- 数据库名称
- 用户名
- 密码
server: port: 8080 spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/springboot_mybatisplus?useSSL=false&useUnicode=true&characterEncoding=UTF-8 username: root password: root
4.DruidDataSourceConfig.java 配置类切换druid数据源
package com.sun.springboot.mybatisplus.config; import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.support.http.StatViewServlet; import com.alibaba.druid.support.http.WebStatFilter; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.boot.web.servlet.ServletRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import javax.sql.DataSource; import java.sql.SQLException; import java.util.Arrays; /** * @author 孙显圣 * @version 1.0 */ @Configuration public class DruidDataSourceConfig { //注入一个德鲁伊数据源 @ConfigurationProperties("spring.datasource") //读取yaml配置文件的参数,获取数据源配置 @Bean public DataSource dataSource() throws SQLException { DruidDataSource druidDataSource = new DruidDataSource(); druidDataSource.setFilters("stat, wall"); //开启sql监控 return druidDataSource; } //配置德鲁伊监控sql功能 @Bean public ServletRegistrationBean statViewServlet() { StatViewServlet statViewServlet = new StatViewServlet(); ServletRegistrationBean registrationBean = new ServletRegistrationBean(statViewServlet, "/druid/*"); //配置登录监控页面用户名和密码 registrationBean.addInitParameter("loginUsername", "root"); registrationBean.addInitParameter("loginPassword", "root"); return registrationBean; } //配置webStatFilter @Bean public FilterRegistrationBean webStatFilter() { WebStatFilter webStatFilter = new WebStatFilter(); FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(webStatFilter); //默认对所有 URL 请求监控 filterRegistrationBean.setUrlPatterns(Arrays.asList("/*")); //排除 URL filterRegistrationBean.addInitParameter ("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"); return filterRegistrationBean; } }
5.编写启动类Application.java,测试运行
package com.sun.springboot.mybatisplus; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; /** * @author 孙显圣 * @version 1.0 */ @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
4.MyBatis-Plus基础配置
1.编写映射表的bean
package com.sun.springboot.mybatisplus.bean; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import java.util.Date; /** * @author 孙显圣 * @version 1.0 */ @Data public class Monster { private Integer id; private Integer age; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date birthday; private String email; private String name; private String gender; private Double salary; }
2.MonsterMapper.java 编写Mapper接口
package com.sun.springboot.mybatisplus.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.sun.springboot.mybatisplus.bean.Monster; import org.apache.ibatis.annotations.Mapper; /** * @author 孙显圣 * @version 1.0 */ //直接继承BaseMapper接口 @Mapper //注入容器 public interface MonsterMapper extends BaseMapper { //如果提供的方法不够用再自定义方法 }
3.测试接口方法使用
package com.sun.springboot.mybatisplus; import com.sun.springboot.mybatisplus.bean.Monster; import com.sun.springboot.mybatisplus.mapper.MonsterMapper; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import javax.annotation.Resource; /** * @author 孙显圣 * @version 1.0 */ @SpringBootTest public class MonsterMapperTest { //注入针对Mapper接口的代理对象 @Resource private MonsterMapper monsterMapper; @Test public void t1() { Monster monster = monsterMapper.selectById(1); System.out.println(monster); } }
5.MyBatis-Plus高级配置
application.yml 进行配置
#进行mybatis-plus配置 mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
6.继续编写Service层和Controller层
1.MonsterService.java
package com.sun.springboot.mybatisplus.service.Impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.sun.springboot.mybatisplus.bean.Monster; import com.sun.springboot.mybatisplus.mapper.MonsterMapper; import com.sun.springboot.mybatisplus.service.MonsterService; import org.springframework.stereotype.Service; /** * 这里 * @author 孙显圣 * @version 1.0 */ @Service public class MonsterServiceImpl extends ServiceImpl implements MonsterService { //自定义方法实现 }
2.MonsterServiceImpl.java
package com.sun.springboot.mybatisplus.service.Impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.sun.springboot.mybatisplus.bean.Monster; import com.sun.springboot.mybatisplus.mapper.MonsterMapper; import com.sun.springboot.mybatisplus.service.MonsterService; import org.springframework.stereotype.Service; /** * 这里 * @author 孙显圣 * @version 1.0 */ @Service public class MonsterServiceImpl extends ServiceImpl implements MonsterService { //自定义方法实现 }
3.测试
package com.sun.springboot.mybatisplus; import com.sun.springboot.mybatisplus.bean.Monster; import com.sun.springboot.mybatisplus.mapper.MonsterMapper; import com.sun.springboot.mybatisplus.service.MonsterService; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import javax.annotation.Resource; /** * @author 孙显圣 * @version 1.0 */ @SpringBootTest public class MonsterServiceTest { @Resource private MonsterService monsterService; @Test public void t1() { Monster byId = monsterService.getById(2); System.out.println(byId); } }
4.细节说明
- 简单来说就是MonsterServiceImpl只需要实现MonsterService接口的方法
- 可以调用IService接口的方法,也可以调用MonsterService接口的方法
5.MonsterController.java
package com.sun.springboot.mybatisplus.controller; import com.sun.springboot.mybatisplus.bean.Monster; import com.sun.springboot.mybatisplus.service.MonsterService; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.ResponseBody; import javax.annotation.Resource; /** * @author 孙显圣 * @version 1.0 */ @Controller public class MonsterController { @Resource //注入的是MonsterServiceImpl的bean对象,可以直接调用IService接口的方法 private MonsterService monsterService; @GetMapping("/getMonster/{id}") @ResponseBody public Monster getMonsterById(@PathVariable("id") Integer id) { Monster byId = monsterService.getById(id); return byId; } }
7.细节说明
1.@MapperScan 扫描包下的所有Mapper
启动类配置注解
2.@TableName bean的类名与表名不一致时使用
3.MyBatis引入了哪些依赖
8.MyBatisX快速开发
1.安装插件
2.使用方式
1.挑一个带小鸟的方法
2.直接alt + Enter
3.生成sql语句
4.查看生成的方法
5.点击左边的小鸟就可以直接跳转到指定方法或者xml
9.完整文件目录
10.MyBatis-Plus小结
- 扫描类路径下mapper文件夹下的所有文件
- 使用namespace指定要实现的接口
- 使用注解注入容器
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理!
部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!
图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!