文章目录
1、创建SpringBoot工程
- 1、创建SpringBoot工程
- 2、项目结构
- 3、配置文件
- 4、执行代码生成
- 5、Service和Controller
- 6、运行启动
本示例项目代码下载地址: https://download.csdn.net/download/mouday/12662948
使用Spring Initializer创建SpringBoot工程,只用如下依赖
Web
MySQL
MyBatis
2、项目结构
$ tree
.
├── pom.xml
└── src
└── main
├── java
│ └── com
│ └── mouday
│ └── demo
│ ├── Application.java
│ ├── controller
│ │ └── PersonController.java
│ ├── mapper
│ │ ├── PersonMapper.java
│ │ └── PersonMapper.xml
│ ├── pojo
│ │ └── Person.java
│ └── service
│ ├── PersonService.java
│ └── impl
│ └── PersonServiceImpl.java
└── resources
├── application.yml
├── generator
│ └── generatorConfig.xml
├── sql
│ └── person.sql
├── static
└── templates
3、配置文件
3个配置文件和1个建表语句文件
pom.xml # 项目依赖
application.yml # 项目配置
generatorConfig.xml # 自动代码生成配置
person.sql # 建表语句
pom.xml
4.0.0
org.springframework.boot
spring-boot-starter-parent
2.3.2.RELEASE
com.mouday
demo
0.0.1-SNAPSHOT
demo
Demo project for Spring Boot
1.8
org.springframework.boot
spring-boot-starter-web
org.mybatis.spring.boot
mybatis-spring-boot-starter
2.1.3
org.springframework.boot
spring-boot-devtools
runtime
true
mysql
mysql-connector-java
runtime
com.alibaba
druid-spring-boot-starter
1.1.1
org.springframework.boot
spring-boot-starter-test
test
org.junit.vintage
junit-vintage-engine
src/main/java
**/*.xml
true
org.springframework.boot
spring-boot-maven-plugin
org.mybatis.generator
mybatis-generator-maven-plugin
1.3.5
${basedir}/src/main/resources/generator/generatorConfig.xml
true
true
mysql
mysql-connector-java
8.0.20
org.mybatis.generator
mybatis-generator-core
1.3.5
application.yml
# 设置端口
server:
port: 8080
# 设置数据源
spring:
datasource:
url: jdbc:mysql://localhost:3306/data
username: root
password: 123456
# 连接池类型
type: com.alibaba.druid.pool.DruidDataSource
# 驱动
driver-class-name: com.mysql.cj.jdbc.Driver
# 连接池配置
druid:
# 最小数
min-idle: 5
# 最大数
max-active: 20
# 初始大小
initial-size: 5
# 配置获取连接等待超时时间
max-wait: 6000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
time-between-eviction-runs-millis: 60000
# 配置一个连接在池中最小生存时间 单位为毫秒
min-evictable-idle-time-millis: 300000
validation-query: SELECT 1 FROM DUAL
test-while-idle: true
test-on-borrow: false
test-on-return: false
# 打开 PSCache,并且指定每个连接上PSCache的大小
pool-prepared-statements: true
max-pool-prepared-statement-per-connection-size: 20
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,wall用于防火墙
filters: stat,wall
# 配置mybatis
mybatis:
# mapper-locations: classpath:mappers/*.xml
# 全局的映射,不用在xml文件写实体类的全路径
# type-aliases-package: com.mouday.demo.pojo
configuration:
# 开启驼峰映射
map-underscore-to-camel-case: true
generatorConfig.xml
person.sql
CREATE TABLE `person` (
`id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
`name` varchar(20) DEFAULT NULL,
`age` int(11) DEFAULT NULL
)
4、执行代码生成
$ mvn mybatis-generator:generate
生成3个文件
Person.java # model
PersonMapper.java # mapper接口
PersonMapper.xml # sql映射
Person.java
package com.mouday.demo.pojo;
public class Person {
private Integer id;
private String name;
private Integer age;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name == null ? null : name.trim();
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
PersonMapper.java
package com.mouday.demo.mapper;
import com.mouday.demo.pojo.Person;
public interface PersonMapper {
int deleteByPrimaryKey(Integer id);
int insert(Person record);
int insertSelective(Person record);
Person selectByPrimaryKey(Integer id);
int updateByPrimaryKeySelective(Person record);
int updateByPrimaryKey(Person record);
}
PersonMapper.xml
id, name, age
select
from person
where id = #{id,jdbcType=INTEGER}
delete from person
where id = #{id,jdbcType=INTEGER}
insert into person (id, name, age
)
values (#{id,jdbcType=INTEGER}, #{name,jdbcType=VARCHAR}, #{age,jdbcType=INTEGER}
)
insert into person
id,
name,
age,
#{id,jdbcType=INTEGER},
#{name,jdbcType=VARCHAR},
#{age,jdbcType=INTEGER},
update person
name = #{name,jdbcType=VARCHAR},
age = #{age,jdbcType=INTEGER},
where id = #{id,jdbcType=INTEGER}
update person
set name = #{name,jdbcType=VARCHAR},
age = #{age,jdbcType=INTEGER}
where id = #{id,jdbcType=INTEGER}
5、Service和Controller
对外服务接口
PersonService.java # 接口
PersonServiceImpl.java # 实现
PersonController.java # 控制器
PersonService.java
package com.mouday.demo.service;
import com.mouday.demo.pojo.Person;
public interface PersonService {
int deleteByPrimaryKey(Integer id);
int insert(Person record);
int insertSelective(Person record);
Person selectByPrimaryKey(Integer id);
int updateByPrimaryKeySelective(Person record);
int updateByPrimaryKey(Person record);
}
PersonServiceImpl.java
package com.mouday.demo.service.impl;
import com.mouday.demo.mapper.PersonMapper;
import com.mouday.demo.pojo.Person;
import com.mouday.demo.service.PersonService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class PersonServiceImpl implements PersonService {
@Autowired
private PersonMapper personMapper;
@Override
public int deleteByPrimaryKey(Integer id) {
return personMapper.deleteByPrimaryKey(id);
}
@Override
public int insert(Person record) {
return personMapper.insert(record);
}
@Override
public int insertSelective(Person record) {
return personMapper.insertSelective(record);
}
@Override
public Person selectByPrimaryKey(Integer id) {
return personMapper.selectByPrimaryKey(id);
}
@Override
public int updateByPrimaryKeySelective(Person record) {
return personMapper.updateByPrimaryKeySelective(record);
}
@Override
public int updateByPrimaryKey(Person record) {
return personMapper.updateByPrimaryKey(record);
}
}
PersonController.java
package com.mouday.demo.controller;
import com.mouday.demo.pojo.Person;
import com.mouday.demo.service.PersonService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/person")
public class PersonController {
@Autowired
private PersonService personService;
@GetMapping("/selectByPrimaryKey")
public Person selectByPrimaryKey(Integer id){
return personService.selectByPrimaryKey(id);
}
}
6、运行启动
package com.mouday.demo;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@SpringBootApplication
@MapperScan("com.mouday.demo.mapper") // 指定mapper扫描包
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@GetMapping("/")
public String index(){
return "hello";
}
}
请求和返回结果
GET http://localhost:8080/person/selectByPrimaryKey?id=1
{
id: 1,
name: "刘禅",
age: 26
}
参考 SpringBoot集成MyBatis及使用mybatis-generator-plugin生成代码(完美,步骤巨详细)