
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);

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
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
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);
}
}
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());
}
}

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;
}
}
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());
}
}

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;
}
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); }

mybatis: #指定要扫描的mapper.xml mapper-locations: classpath:mapper/*.xml
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);
}
}

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
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);
}
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);
}
}
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);
}
}

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;
}
}




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);

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
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
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;
}
}
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);
}
}

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;
}
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{ //如果提供的方法不够用再自定义方法 }
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);
}
}

#进行mybatis-plus配置
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
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 ServiceImplimplements MonsterService { //自定义方法实现 }
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 ServiceImplimplements MonsterService { //自定义方法实现 }
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);
}
}


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;
}
}













上一篇:30天拿下Rust之泛型