# 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项目 ![image-20220406102915589](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220406102915589.png) #### 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文件 ![image-20220406105050137](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220406105050137.png) ```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; } } ``` 所有的包 ![image-20220406110941632](SpringBoot_MyBatis_plus_demo.assets/image-20220406110941632.png) #### 9.postman测试接口 ![image-20220406110804341](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220406110804341.png)