1.添加依赖

  <!-- MySQL数据库 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
<!-- mybatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<!-- mybatis-plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>2.1.6</version>
</dependency>
<!-- MyBatis-Plus模板引擎 -->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.1</version>
</dependency>
<!--热部署 每次修改代码springboot自动重启服务-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
<!-- lombok插件 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>

2. 自动代码生成器

 package com.my_springboot.generator;

 import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.TemplateConfig;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; /**
* 代码生成器
*/
public class MpGenerator { public static void main(String[] args) {
String tableNames = "sys_user_info";// 通过表名生成相关类,多个用英文逗号隔开
String tablePrefix = "sys_";// 去掉表名前缀
String packageName = "com.my_springboot.user";// 自定义自己的包名,后续的代码生成会在这个包下
String projectPath = "C:\\Users\\86130\\Desktop\\mmp";// 生成文件的输出目录 我一般放在桌面,避免原文件被覆盖
new AutoGenerator()
.setGlobalConfig(getGlobalConfig(projectPath)) //全局配置
.setDataSource(getDataSource()) //数据源配置
.setPackageInfo(getPackageConfig(packageName)) //包配置
.setStrategy(getStrategyConfig(tableNames, tablePrefix)) //策略配置
.setTemplate(getTemplateConfig()) //模板配置
.execute();
} /**
* 全局配置
*
* @param projectPath 生成文件的输出目录
*/
private static GlobalConfig getGlobalConfig(String projectPath) {
//全局配置
GlobalConfig gc = new GlobalConfig();
gc.setOutputDir(projectPath)// 生成文件的输出目录
.setAuthor("JiHC")// 作者
.setOpen(true)// 是否打开输出目录 默认值:true
.setFileOverride(true)// 是否覆蓋已有文件 默认值:false
.setSwagger2(true)// 开启 swagger2 模式 默认false
.setBaseColumnList(true)// 开启 baseColumnList 默认false
.setBaseResultMap(true)// 开启 BaseResultMap 默认false
.setIdType(IdType.ASSIGN_UUID)// 主键策略 ASSIGN_UUID:主键生成32位字符串ID
.setDateType(DateType.ONLY_DATE)// 设置时间类型使用哪个包下的
.setEntityName("%sDO")// entity 命名方式 默认值:null 例如:%sEntity 生成 UserEntity
.setMapperName("%sDAO")// dao 命名方式 默认值:null 例如:%sDao 生成 UserDao
/*.setXmlName("%sMapper")// Mapper xml 命名方式 默认值:null 例如:%sDao 生成 UserDao.xml
.setServiceName("%sService")// service 命名方式 默认值:null 例如:%sBusiness 生成 UserBusiness
.setServiceImplName("%sServiceImpl")// service impl 命名方式 默认值:null 例如:%sBusinessImpl 生成 UserBusinessImpl
.setControllerName("%sController")*/// controller 命名方式 默认值:null 例如:%sAction 生成 UserAction
;
return gc;
} /**
* 数据源配置
*/
private static DataSourceConfig getDataSource() {
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl(
"jdbc:mysql://localhost:3306/my_springboot?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC"
);
dsc.setDriverName("com.mysql.cj.jdbc.Driver");
dsc.setUsername("root");
dsc.setPassword("root");
return dsc;
} /**
* 包配置
*
* @param packageName 自定义包名,后续的代码生成会在这个包下
*/
private static PackageConfig getPackageConfig(String packageName) {
PackageConfig pc = new PackageConfig();
pc.setParent(packageName)
.setController("controller")
.setService("service")
.setMapper("dao")
.setEntity("pojo");
return pc;
} /**
* 策略配置
*
* @param tableNames 需要生成的表名
*/
private static StrategyConfig getStrategyConfig(String tableNames, String tablePrefix) {
// 策略配置 数据库表配置,通过该配置,可指定需要生成哪些表或者排除哪些表
StrategyConfig strategy = new StrategyConfig();
strategy.setCapitalMode(false)//驼峰命名
.setNaming(NamingStrategy.underline_to_camel)//表名生成策略(下划线转驼峰)
.setColumnNaming(NamingStrategy.underline_to_camel)//列名生成策略(下划线转驼峰)
.setEntityLombokModel(true)//【实体】是否为lombok模型(默认 false)
.setRestControllerStyle(true)//生成 @RestController 控制器
.setInclude((tableNames).split(","))//通过表名生成相关类
.setTablePrefix(tablePrefix)//去掉表的前缀
.setControllerMappingHyphenStyle(true);//驼峰转连字符
//自定义继承的类全称,带包名
/*strategy.setSuperControllerClass("com.common.BaseController");
strategy.setSuperServiceClass((String) null);
strategy.setSuperServiceImplClass((String) null);
strategy.setSuperMapperClass(null);
strategy.setSuperEntityClass("com.common.BaseEntity")
strategy.setSuperEntityColumns("id");*/
return strategy;
} /**
* 模板配置:velocity模板
*/
private static TemplateConfig getTemplateConfig() {
TemplateConfig tc = new TemplateConfig();
//使用resource下的自定义模板,不想要生成就设置为null,如果不设置null会使用默认模板
tc.setController("templates/controller.java.vm")
.setService("templates/service.java")
.setServiceImpl("templates/serviceImpl.java")
.setEntity("templates/entity.java")
.setMapper("templates/mapper.java")
.setXml("templates/mapper.xml");
return tc;
} }

开启 Swagger2 模式需配置 Swagger : 从零开始的SpringBoot项目 ( 五 ) 整合 Swagger 实现在线API文档的功能

配置完数据库源以及需要生成的对应表生成即可

分页配置

package com.my_springboot.config;

import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement; @EnableTransactionManagement
@Configuration
public class MybatisPlusConfig { @Bean
public PaginationInterceptor paginationInterceptor() {
PaginationInterceptor interceptor = new PaginationInterceptor();
// 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求 默认false
interceptor.setOverflow(true);
// 设置最大单页限制数量,默认 500 条,-1 不受限制
// paginationInterceptor.setLimit(500);
return new PaginationInterceptor();
}
}

controller层UserInfoController

package com.my_springboot.user.controller;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.my_springboot.user.pojo.UserInfoDO;
import com.my_springboot.user.service.IUserInfoService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController; /**
* <p>
* 用户信息前端控制器
* </p>
*
* @author JiHC
* @since 2020-08-21
*/
@RestController
@RequestMapping("/user")
@Api(value = "UserInfoController", tags = {"用户模块"})
public class UserInfoController { @Autowired
IUserInfoService userInfoService; @ApiOperation("新增用户信息")
@PostMapping(value = "/saveUser")
public String saveUser(@RequestBody UserInfoDO userInfoDO) {
userInfoService.save(userInfoDO);
return "用户添加成功!";
} @ApiOperation("根据问题id修改问题")
@PutMapping(value = "/updateUser")
public String updateUser(@RequestBody UserInfoDO userInfoDO) {
userInfoService.updateById(userInfoDO);
return "用户修改成功!";
} @ApiOperation("根据id删除用户信息")
@DeleteMapping(value = "/removeUser")
@ApiImplicitParam(name = "id", value = "用户id", dataType = "string", required = true, paramType = "query")
public String removeUser(@RequestParam String id) {
userInfoService.removeById(id);
return "用户删除成功!";
} @ApiOperation("分页查询用户")
@PostMapping(value = "/listUserPage")
@ResponseBody
@ApiImplicitParams({
@ApiImplicitParam(name = "pageNum", value = "当前页码", dataType = "int", required = true, paramType = "query",defaultValue = "1"),
@ApiImplicitParam(name = "pageSize", value = "每页数量", dataType = "int", required = true, paramType = "query",defaultValue = "10")
})
public Page<UserInfoDO> listUserPage(Integer pageNum, Integer pageSize) {
return userInfoService.listUserPage(new Page(pageNum, pageSize));
}
}

service层类UserInfoService

package com.my_springboot.user.service.impl;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.my_springboot.user.pojo.UserInfoDO;
import com.my_springboot.user.dao.UserInfoDAO;
import com.my_springboot.user.service.IUserInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import java.util.List;
import org.springframework.stereotype.Service; /**
* <p>
* 用户信息服务实现类
* </p>
*
* @author JiHC
* @since 2020-08-21
*/
@Service
public class UserInfoServiceImpl extends ServiceImpl<UserInfoDAO, UserInfoDO> implements
IUserInfoService {
@Override
public Page<UserInfoDO> listUserPage(Page<UserInfoDO> page) {
page.setRecords(baseMapper.listUsers(page));
return page;
}
}

DAO层UserInfoDAO

package com.my_springboot.user.dao;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.my_springboot.user.pojo.UserInfoDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List; /**
* <p>
* 用户信息Mapper 接口
* </p>
*
* @author JiHC
* @since 2020-08-21
*/
public interface UserInfoDAO extends BaseMapper<UserInfoDO> { /**
* 查询用户列表
*
* @return users
*/
List<UserInfoDO> listUsers(Page<UserInfoDO> page);
}

UserMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.my_springboot.user.dao.UserInfoDAO"> <!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.my_springboot.user.pojo.UserInfoDO">
<result column="id" property="id"/>
<result column="nick_name" property="nickName"/>
<result column="gender" property="gender"/>
<result column="skey" property="skey"/>
<result column="openid" property="openid"/>
<result column="session_key" property="sessionKey"/>
<result column="phone" property="phone"/>
<result column="password" property="password"/>
<result column="city" property="city"/>
<result column="province" property="province"/>
<result column="country" property="country"/>
<result column="avatar_url" property="avatarUrl"/>
<result column="first_visit_time" property="firstVisitTime"/>
<result column="last_visit_time" property="lastVisitTime"/>
<result column="ip_address" property="ipAddress"/>
<result column="is_delete" property="isDelete"/>
</resultMap> <!-- 通用查询结果列 -->
<sql id="Base_Column_List">
id, nick_name, gender, skey, openid, session_key, phone, password, city, province, country, avatar_url, first_visit_time, last_visit_time, ip_address, is_delete
</sql> <!-- 查询用户列表 -->
<select id="listUsers" resultMap="BaseResultMap">
SELECT
<include refid="Base_Column_List"/>
FROM `sys_user_info`
</select> </mapper>

启动项目并访问Swagger

从零开始的SpringBoot项目 ( 六 ) 整合 MybatisPlus 实现代码自动生成的更多相关文章

  1. 从零开始的SpringBoot项目 ( 五 ) 整合 Swagger 实现在线API文档的功能

    综合概述 spring-boot作为当前最为流行的Java web开发脚手架,越来越多的开发者选择用其来构建企业级的RESTFul API接口.这些接口不但会服务于传统的web端(b/s),也会服务于 ...

  2. 从零开始的SpringBoot项目 ( 四 ) 整合mybatis

    一.创建一个SpringBoot项目 从零开始的SpringBoot项目 ( 二 ) 使用IDEA创建一个SpringBoot项目 二.引入相关依赖 <!--mysql数据库驱动--> & ...

  3. SpringBoot与Mybatis整合(包含generate自动生成代码工具,数据库表一对一,一对多,关联关系中间表的查询)

    链接:https://blog.csdn.net/YonJarLuo/article/details/81187239 自动生成工具只是生成很单纯的表,复杂的一对多,多对多的情况则是在建表的时候就建立 ...

  4. 使用Springboot + Gradle快速整合Mybatis-Plus

    使用Springboot + Gradle快速整合Mybatis-Plus 作者:Stanley 罗昊 [转载请注明出处和署名,谢谢!] MyBatis-Plus(简称 MP)是一个 MyBatis ...

  5. springboot整合mybatis,利用mybatis-genetor自动生成文件

    springboot整合mybatis,利用mybatis-genetor自动生成文件 项目结构: xx 实现思路: 1.添加依赖 <?xml version="1.0" e ...

  6. 从零开始搭建SpringBoot项目

    一.新建springboot项目 1. new-->Project-->Spring Initralizr Group:com.zb Artifact:zbook springboot v ...

  7. 从零开始的SpringBoot项目 ( 一 ) Spring、SpringMVC和SpringBoot

    要想开始一个SpringBoot项目 , 首先要知道SpringBoot是什么 , 可以做什么 , 再去研究怎么用 . 一.概念 1.Spring Spring是一个开源容器框架,可以接管web层,业 ...

  8. 从零开始的SpringBoot项目搭建

    前言 今天是我加入博客园的第一天今天刚好学习到SpringBoot,就顺便记录一下吧 一.创建项目 1.创建工程 ① 通过File > New > Project,新建工程,选择Sprin ...

  9. SpringBoot整合MyBatis-Plus代码自动生成类

    在springboot的test测试类下创建 MpGenerator.java   配置  MpGenerator.java public class MpGenerator { @Test publ ...

随机推荐

  1. Pandas 复习2

    import pandas as pd import numpy as np food_info = pd.read_csv('food_info.csv') 1.处理缺失值(可使用平均数,众数填充) ...

  2. format 进阶

    '''format(数字,str(算术式)+"d或者f") d 表示 int f 表示 float ''' format(5,str(2*4)+"d") '' ...

  3. centos7安装单机环境redis3.2

    本次安装的系统版本如下: [root@zhangqinglei ~]# cat /etc/redhat-releaseCentOS Linux release 7.5.1804 (Core) [roo ...

  4. PHP count_chars() 函数

    实例 返回一个字符串,包含所有在 "Hello World!" 中使用过的不同字符(模式 3): <?php高佣联盟 www.cgewang.com$str = " ...

  5. luogu P1973 [NOI2011]NOI 嘉年华 dp

    LINK:NOI 嘉年华 一道质量非常高的dp题目. 考虑如何求出第一问 容易想到dp. 按照左端点排序/右端点排序状态还是很难描述. 但是我们知道在时间上肯定是一次选一段 所以就可以直接利用时间点来 ...

  6. js的栈内存和堆内存

    栈内存和堆内存在了解一门语言底层数据结构上,挺重要的,做了个总结 JS中的栈内存堆内存 JS的内存空间分为栈(stack).堆(heap).池(一般也会归类为栈中). 其中栈存放变量,堆存放复杂对象, ...

  7. 利用WxJava实现PC网站集成微信登录功能

    原文地址:https://mp.weixin.qq.com/s/rT0xL9uAdHdZck_F8nyncg 来源:微信公众号:java碎碎念 1. 微信开放平台操作步骤 微信开放平台地址:https ...

  8. 串口通信—USB转串口

    如何使用c库printf

  9. 移动端与Web端疫情数据展示

    1.题目要求 2.整体思想 首先是在前两阶段已经完成的echarts可视化.利用Jsoup爬取疫情数据基础上来进行调用与完善.大致思想是在Android Studio上完成交互去调用ecplise中的 ...

  10. 解决使用rollup构建ECharts过程中遇到的问题

    1.ECharts官方文档 参考:自定义构建 ECharts - ECharts Documentation 2.解决问题 改动一: // line.js // 引入 echarts 主模块. // ...