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(); ServletRegistrationBeanregistrationBean = 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(); ServletRegistrationBeanregistrationBean = 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之泛型