文章目录

1.整合MyBatis1.需求分析2.数据库表设计3.数据库环境配置1.新建maven项目2.pom.xml 引入依赖3.application.yml 配置数据源4.Application.java 编写启动类5.测试6.配置类切换druid数据源7.测试数据源是否成功切换

4.Mybatis基础配置1.编写映射表的bean2.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.java2.MonsterServiceImpl.java3.测试4.MonsterController.java5.测试6.解决时间问题

7.完整文件目录

2.整合MyBatis-Plus1.MyBatis-Plus基本介绍2.数据库表设计3.数据库环境配置1.创建maven项目2.pom.xml 导入依赖3.application.yml 配置数据源4.DruidDataSourceConfig.java 配置类切换druid数据源5.编写启动类Application.java,测试运行

4.MyBatis-Plus基础配置1.编写映射表的bean2.MonsterMapper.java 编写Mapper接口3.测试接口方法使用

5.MyBatis-Plus高级配置application.yml 进行配置

6.继续编写Service层和Controller层1.MonsterService.java2.MonsterServiceImpl.java3.测试4.细节说明5.MonsterController.java

7.细节说明1.@MapperScan 扫描包下的所有Mapper启动类配置注解

2.@TableName bean的类名与表名不一致时使用image-202403172009519713.MyBatis引入了哪些依赖

8.MyBatisX快速开发1.安装插件2.使用方式1.挑一个带小鸟的方法2.直接alt + Enter3.生成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指定要实现的接口

PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

"https://mybatis.org/dtd/mybatis-3-mapper.dtd">

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小结

参考文章

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: