# springboot_mybatisplus_demo
**Repository Path**: MiddleZqz/springboot_mybatisplus_demo
## Basic Information
- **Project Name**: springboot_mybatisplus_demo
- **Description**: 一个快速入门的SpringBoot+Mybatis plus的demo
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 2
- **Forks**: 1
- **Created**: 2022-04-06
- **Last Updated**: 2023-08-08
## Categories & Tags
**Categories**: Uncategorized
**Tags**: Java
## README
### SpringBoot + MyBatis的demo
#### 1.创建一个新的Springboot项目

#### 2.准备配置
导入pom.xml
```xml
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter
mysql
mysql-connector-java
8.0.21
org.projectlombok
lombok
1.18.22
org.springframework.boot
spring-boot-starter-test
test
com.baomidou
mybatis-plus
3.4.0
com.baomidou
mybatis-plus-generator
3.4.0
org.apache.velocity
velocity-engine-core
2.1
com.ibeetl
beetl
3.9.3.RELEASE
org.freemarker
freemarker
2.3.31
org.springframework
spring-core
5.3.14
log4j
log4j
1.2.12
org.slf4j
slf4j-api
1.7.32
org.slf4j
slf4j-log4j12
1.7.7
com.baomidou
mybatis-plus-boot-starter
3.4.0
com.alibaba
fastjson
1.2.79
net.sourceforge.nekohtml
nekohtml
1.9.22
io.springfox
springfox-swagger2
2.9.2
io.springfox
springfox-swagger-ui
2.9.2
com.google.guava
guava
25.1-jre
org.javassist
javassist
3.25.0-GA
p6spy
p6spy
3.9.1
```
建立Mysql数据库(localhost建立个demo数据库然后创建user表)
```sql
/*
Navicat MySQL Data Transfer
Source Server : localhost
Source Server Version : 50718
Source Host : localhost:3306
Source Database : demo
Target Server Type : MYSQL
Target Server Version : 50718
File Encoding : 65001
Date: 2022-04-06 11:12:58
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`userId` int(22) NOT NULL AUTO_INCREMENT COMMENT '用户表主键id',
`userName` varchar(255) NOT NULL COMMENT '用户名',
`userPwd` varchar(255) NOT NULL COMMENT '用户密码',
`sex` varchar(255) DEFAULT NULL COMMENT '性别',
`phone` varchar(255) DEFAULT NULL COMMENT '电话',
PRIMARY KEY (`userId`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES ('1', '张三', '123456', '男', '11111111111');
INSERT INTO `user` VALUES ('2', '李四', 'aaaaaa', '男', '11111111111');
```
#### 3.配置文件信息
application.properties
```properties
spring.datasource.url=jdbc:p6spy:mysql://localhost:3306/demo?zeroDateTimeBehavior=convertToNull&useSSL=false&useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=123456
#数据源
server.servlet.context-path=/hotSot
spring.datasource.driver-class-name=com.p6spy.engine.spy.P6SpyDriver
#spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
#spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
#spring.datasource.druid.initial-size=5
#spring.datasource.druid.min-idle=10
#spring.datasource.druid.max-active=20
## 配置获取连接等待超时的时间(单位:毫秒)
#spring.datasource.druid.max-wait=60000
#mybatis-plus配置
mybatis-plus.mapper-locations=classpath:mapper/xml/*.xml
mybatis-plus.configuration.map-underscore-to-camel-case=false
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+8
server.port=4090
logging.config=classpath:logback.xml
logging.file.name=hotSotlogging.log
logging.file.path=/home/urunadmin/zjx/peizhi/log
#log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
```
logback.xml
```xml
logback
${logging.pattern.console}
true
logs/%d{yyyy-MM}/%d{yyyy-MM-dd}.log
365
ERROR
${logging.pattern.file}
```
spy.properties
```properties
#3.2.1以上使用
modulelist=com.baomidou.mybatisplus.extension.p6spy.MybatisPlusLogFactory,com.p6spy.engine.outage.P6OutageFactory
#3.2.1以下使用或者不配置
#modulelist=com.p6spy.engine.logging.P6LogFactory,com.p6spy.engine.outage.P6OutageFactory
# 自定义日志打印
logMessageFormat=com.baomidou.mybatisplus.extension.p6spy.P6SpyLogger
#日志输出到控制台
appender=com.baomidou.mybatisplus.extension.p6spy.StdoutLogger
# 使用日志系统记录 sql
#appender=com.p6spy.engine.spy.appender.Slf4JLogger
# 设置 p6spy driver 代理
deregisterdrivers=true
# 取消JDBC URL前缀
useprefix=true
# 配置记录 Log 例外,可去掉的结果集有error,info,batch,debug,statement,commit,rollback,result,resultset.
excludecategories=info,debug,result,commit,resultset
# 日期格式
dateformat=yyyy-MM-dd HH:mm:ss
# 实际驱动可多个
#driverlist=org.h2.Driver
# 是否开启慢SQL记录
outagedetection=true
# 慢SQL记录标准 2 秒
outagedetectioninterval=2
```
#### 4.创建实体类(bean)
建立一个User.java
```java
@Data
@Setter
@Getter
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class User {
private Integer userId;
private String userName;
private String userPwd;
private String sex;
private Integer phone;
}
```
建立一个Result类(用来返回数据)
```java
@Data
@Setter
@Getter
@ToString
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("返回对象")
/**
* JsonJsonInclude.Include.NON_NULL这个最常用,
* 即如果加该注解的字段为null,那么就不序列化这个字段了
* 意思就是说为null的时候就不会把实体类序列化为json字段
*/
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Result implements Serializable {
@ApiModelProperty("状态码")
private String code;
@ApiModelProperty("返回消息")
private String message;
@ApiModelProperty("返回对象")
private Object data;
}
```
#### 5.创建UserMapper
继承BaseMapper接口
```java
@Mapper
public interface UserMapper extends BaseMapper {
List search();
}
```
#### 6.建立对应的UserMapper.xml
在resources的mapper/xml包下创建对应的xml文件

```xml
```
通过编写对用的sql语句来完成所需功能
#### 7.创建Userservice类
```java
@Service
public class UserService {
@Autowired
UserMapper userMapper;
public List search(){
return userMapper.search();
}
}
```
#### 8.编写UserController
```java
@RestController
@RequestMapping("/User")
public class UserController {
@Autowired
UserService userService;
@GetMapping("/Search")
public Result Search(){
Result result = new Result();
List search = userService.search();
if (search.isEmpty()){
return new Result("404","没有该关键字的数据",null);
}else {
result.setMessage("搜索成功");
result.setCode("200");
result.setData(search);
}
return result;
}
}
```
所有的包

#### 9.postman测试接口
