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. luogu P1721 [NOI2016]国王饮水记 斜率优化dp 贪心 决策单调性

    LINK:国王饮水记 看起来很不可做的样子. 但实际上还是需要先考虑贪心. 当k==1的时候 只有一次操作机会.显然可以把那些比第一个位置小的都给扔掉. 然后可以得知剩下序列中的最大值一定会被选择. ...

  2. react-router分析 - 一、history

    react-router基于history库,它是一个管理js应用session会话历史的js库.它将不同环境(浏览器,node等)的变量统一成了一个简易的API来管理历史堆栈.导航.确认跳转.以及s ...

  3. 【Canal】互联网背景下有哪些数据同步需求和解决方案?看完我知道了!!

    写在前面 在当今互联网行业,尤其是现在分布式.微服务开发环境下,为了提高搜索效率,以及搜索的精准度,会大量使用Redis.Memcached等NoSQL数据库,也会使用大量的Solr.Elastics ...

  4. vmware15虚拟机安装教程

    自己碰到的问题:本人win7 64位旗舰版系统.之前用VMware12pro版本的软件,在安装Ubuntu18.04之后,有时候开启Ubuntu虚拟机时有点问题,重启就可以了.但是不稳定,所以改用VM ...

  5. 笨办法学习python3练习代码:argv参数变量与文件操作

    ex15.py 完成ex15.py需要在ex15.py同文件夹目录下面准备一个txt文件(ex15_sample.txt) 执行ex15.py 如: python     ex15.py      e ...

  6. tensorboard报错:AttributeError: ‘Value’ object has no attribute ‘metadata’

    tensorboard的网页可以访问,但是只能观察到graph数据,但是观察不到scalars数据. 原因:tensorflow版本需>=1.3.0 解决方法:升级tensorflow

  7. springboot 使用mybatis-generator自动生成代码

    这里只介绍mybatis generator生成代码 一.pom配置 在build-->plugins-->添加plugin <plugin> <groupId>o ...

  8. Flink的流处理API(二)

    一.Environment 1,getExecutionEnvironment getExecutionEnvironment会根据查询运行的方式决定返回什么样的运行环境,是最常用的一种创建执行环境的 ...

  9. Android SQLite轻量级数据库的删除和查找操作

    今天主要是补充昨天的内容,本打算合成一章的,但是毕竟一天一天的内容写习惯了. 就这样继续昨天的,昨天只讲了创建以及增加和查询, 其实用法都差不多,今天学长也是在原有的基础上写的,还顺便融合了Share ...

  10. 大学生可用来接单,利用Python实现教务系统扩容抢课!

    最近一学期一次的抢课大戏又来了,几家欢乐几家愁.O(∩_∩)O哈哈~(l我每次一选就过了hah,我还是有欧的时候滴).看着他们盯着教务系统就着急,何况我们那教务系统,不想说什么.emmm 想周围的朋友 ...