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`)
) CHARSET=utf8
SELECT * FROM `monster`
INSERT INTO monster VALUES(NULL, 20, '2000-11-11', '[email protected]', '男', '蝎子精', 15000.88);
INSERT INTO monster VALUES(NULL, 10, '2011-11-11', '[email protected]', '女', '玉兔精', 18000.88);
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0modelVersion>
<groupId>com.xjsgroupId>
<artifactId>springboot-mybatisplusartifactId>
<version>1.0-SNAPSHOTversion>
<parent>
<artifactId>spring-boot-starter-parentartifactId>
<groupId>org.springframework.bootgroupId>
<version>2.5.3version>
parent>
<dependencies>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
<dependency>
<groupId>com.baomidougroupId>
<artifactId>mybatis-plus-boot-starterartifactId>
<version>3.4.3version>
dependency>
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-configuration-processorartifactId>
dependency>
<dependency>
<groupId>org.projectlombokgroupId>
<artifactId>lombokartifactId>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-testartifactId>
dependency>
<dependency>
<groupId>com.alibabagroupId>
<artifactId>druidartifactId>
<version>1.1.17version>
dependency>
dependencies>
project>
<dependency>
<groupId>com.baomidougroupId>
<artifactId>mybatis-plus-boot-starterartifactId>
<version>3.4.3version>
dependency>
server:
port: 9090
spring:
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: hsp
<dependency>
<groupId>com.alibabagroupId>
<artifactId>druidartifactId>
<version>1.1.17version>
dependency>
package com.xjs.springboot.mybatisplus.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
*/
@Configuration
public class DruidDataSourceConfig {
@ConfigurationProperties("spring.datasource")
@Bean
public DataSource dataSource() {
DruidDataSource druidDataSource = new DruidDataSource();
return druidDataSource;
}
}
package com.xjs.springboot.mybatisplus.bean;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
/**
* @Author: 谢家升
* @Version: 1.0
*
* 说明:
* 1. 如果 实体类Monster 和 表名monster 是对应的,就可以映射上,则 @TableName 可以省略
* 2. 如果 实体类Monster 和 表名monster_ 不对应,需要使用 @TableName 进行指定
*/
@Data
@TableName(value = "monster_")
public class Monster {
private Integer id;
private Integer age;
//通过注解来解决时区问题
//GMT 就是格林尼治标准时间
@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.xjs.springboot.mybatisplus.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.xjs.springboot.mybatisplus.bean.Monster;
import org.apache.ibatis.annotations.Mapper;
/**
* @Author: 谢家升
* @Version: 1.0
*
* 解读:
* 1. BaseMapper 已经默认提供了很多的 crud 方法,可以直接使用
* 2. 如果 BaseMapper 提供的方法不能满足业务需求,
* 我们可以再自定义新的方法,并在 MonsterMapper.xml进行配置
*/
//@Mapper
public interface MonsterMapper extends BaseMapper<Monster> {
//自定义方法
}
package com.xjs.springboot.mybatisplus.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.xjs.springboot.mybatisplus.bean.Monster;
/**
* @Author: 谢家升
* @Version: 1.0
*
* 解读:
* 1. 传统方式:在该接口中定义方法,然后在实现类中实现
* 2. 在mybatis-plus我们可以继承父接口 IService
* 3. 这个 IService 接口中声明很多方法,比如 crud
* 4. 如果默认提供的方法不能满足业务的需求,我们可以再自定义需要的方法,然后再实现类中实现即可
*/
public interface MonsterService extends IService<Monster> {
//public void t1();
}
package com.xjs.springboot.mybatisplus.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xjs.springboot.mybatisplus.bean.Monster;
import com.xjs.springboot.mybatisplus.mapper.MonsterMapper;
import com.xjs.springboot.mybatisplus.service.MonsterService;
import org.springframework.stereotype.Service;
/**
* @Author: 谢家升
* @Version: 1.0
*
* 解读:
* 1. 传统方式:在实现类中直接 implements MonsterService
* 2. 在mybatis-plus 我们开发Service实现类,需要继承ServiceImpl
* 3. 我们看到 ServiceImpl类 实现了 IService接口
* 4. MonsterService 接口继承了 IService接口
* 5. 这里 MonsterServiceImpl 就可以认为实现了 MonsterService接口,
* 这样MonsterServiceImpl 就可以使用 IService接口的方法,也可以理解成可以使用 MonsterService 的方法
* 6. 如果 monsterService接口中,声明了其他的方法/自定义方法,
* 那么,我们依然需要在 MonsterServiceImpl类 进行实现
*/
@Service
public class MonsterServiceImpl
extends ServiceImpl<MonsterMapper, Monster>
implements MonsterService {
//@Override
//public void t1() {
//
//}
}
package com.xjs.springboot.mybatisplus.controller;
import com.xjs.springboot.mybatisplus.bean.Monster;
import com.xjs.springboot.mybatisplus.service.MonsterService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
import java.util.List;
/**
* @Author: 谢家升
* @Version: 1.0
*/
@Controller
public class MonsterController {
@Resource
private MonsterService monsterService;
//根据id 返回对应的数据
@GetMapping("/monster")
@ResponseBody
public Monster getMonsterById(@RequestParam(value = "id") Integer id) {
return monsterService.getById(id);
}
//编写方法 返回所有的monster信息
@GetMapping("/list")
@ResponseBody
public List<Monster> monsterList() {
List<Monster> monsters = monsterService.list();
return monsters;
}
}
package com.xjs.springboot.mybatisplus;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* @Author: 谢家升
* @Version: 1.0
*
* 解读:
* 1. 使用 @MapperScan 可以指定要扫描的 Mapper接口
* 2. 属性 basePackages 可以指定多个包
*/
@MapperScan(basePackages = {"com.xjs.springboot.mybatisplus.mapper"})
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
如果这个类名 Monster 和 表名 monster 一致,可以映射上,则 @TableName 可以省略
如果这个类名 Monster 和 表名 不一致,不能映射上,则可以通过 @TableName 指定