900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 初学Java 从0-1创建Spring boot+Mybatis - plus+Swagger2+Mysql(代码生成器)

初学Java 从0-1创建Spring boot+Mybatis - plus+Swagger2+Mysql(代码生成器)

时间:2024-03-24 00:10:51

相关推荐

初学Java 从0-1创建Spring boot+Mybatis - plus+Swagger2+Mysql(代码生成器)

第一章 初学Java 创建Spring boot+Mybatis-plus+mysql

目录一、创建项目二、配置pom.xml三、配置application.yml四、增加Mybatis-plus的Generator自动生成功能五、创建用户数据库六、生成user相关类

目录

身为一个理工男,话不多说,直接开干。

一、创建项目

1、新建项目

1.1第一步新建项目

1.2第二步完善创建的项目

填写好之后直接下一步,到此第一步项目已经创建完成!

二、配置pom.xml

1.加入mybatis-plus、mysql、lombok、Swagger依赖。

<!--Mybatis Plus--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.1</version></dependency><!--Mybatis Plus 代码生成器依赖--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.5.1</version></dependency><!-- freemarker模板 --><dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.31</version></dependency><!--Mysql--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.17</version></dependency><!--lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><!--Swagger-UI API文档生产工具--><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>2.9.2</version></dependency><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.9.2</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>

加入依赖之后,咱们把org.springframework.boot放到最后,不然运行的时候会报错。

三、配置application.yml

resources下新建文件application.yml

创建完成之后配置文件

代码块

cache: false # 关闭缓存,默认开启 # prefix: classpath:/pages/ #修改默认路径 classpath:/templates/ datasource:url: jdbc:mysql://localhost:3306/hamletdb?useUnicode=true&characterEncoding=utf-8&serverTimezone=CTTusername: rootpassword: rootdriver-class-name: com.mysql.cj.jdbc.Driver mvc:pathmatch:matching-strategy: ant_path_matcher# mybatis-plus配置 mybatis-plus: configuration:# 是否开启自动驼峰命名规则(camel case)映射,即从经典数据库列名 A_COLUMN(下划线命名) 到经典 Java 属性名 aColumn(驼峰命名) 的类似映射map-underscore-to-camel-case: true# 这个配置会将执行的sql打印出来,在开发或测试的时候可以用log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #MyBaits 别名包扫描路径,通过该属性可以给包中的类注册别名 type-aliases-package:com.example.hamlet.entity #xml扫描,多个目录用逗号或者分号分隔(告诉 Mapper 所对应的 XML文件位置) mapperLocations: classpath:mapper/*.xml ```

加入配置之后我们重新生成一下依赖

然后在启动文件中声明一下,项目已启动

点击三角按钮启动运行

现在项目已成功运行

四、增加Mybatis-plus的Generator自动生成功能

1、首先我们在com.example.hamlet下创建generator软件包,在软件包下面创建启动类MybatisPlusGenerator,如下图

代码块

package com.example.hamlet.generator;import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.generator.FastAutoGenerator; import com.baomidou.mybatisplus.generator.config.*;import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;import java.util.*;import java.util.function.BiConsumer; import java.util.function.Consumer;import java.util.function.Function;public class MybatisPlusGenerator {private static final String datasourceUrl="jdbc:mysql://localhost:3306/hamletdb?useUnicode=true&characterEncoding=utf-8&serverTimezone=CTT";private static final String datasourceUsername="root";private static final String datasourcePassword="Renshaobo0306";public static void main(String[] args){// 项目路径String projectPath = System.getProperty("user.dir");// 代码生成器FastAutoGenerator.create(datasourceUrl, datasourceUsername, datasourcePassword)// 全局配置.globalConfig(initGlobalConfig(projectPath)).packageConfig(initPackageConfig(projectPath))//.templateConfig(builder -> {//禁止除entiy的模板,只更新实体类// builder.disable(TemplateType.CONTROLLER,TemplateType.MAPPER,TemplateType.SERVICE,TemplateType.SERVICEIMPL,TemplateType.XML);}).strategyConfig(initStrategyConfig())// 使用Freemarker引擎模板,默认的是Velocity引擎模板.templateEngine(new FreemarkerTemplateEngine()).execute();}// 处理 all 情况protected static List<String> getTables(String tables) {return "all".equals(tables) ? Collections.emptyList() : Arrays.asList(tables.split(","));}/*** 初始化全局配置*/private static Consumer<GlobalConfig.Builder> initGlobalConfig(String projectPath) {return builder -> {// 作者builder.author("Hamlet")// 输出路径.outputDir(projectPath + "/src/main/java")// 禁止打开输出目录.disableOpenDir()// 开启swagger.enableSwagger()// 注释日期.commentDate("yyyy/MM/dd HH:mm")// 开启覆盖之前生成的文件.fileOverride();};}/*** 初始化包配置*/private static Consumer<PackageConfig.Builder> initPackageConfig(String projectPath) {return builder -> {builder.parent("com.example.hamlet") //生成文件的父包.entity("entity").service("service").serviceImpl("service.impl").controller("controller").mapper("mapper").xml("mapper").pathInfo(Collections.singletonMap(OutputFile.mapperXml, projectPath + "/src/main/resources/mapper/"));};}/*** 初始化策略配置*/private static BiConsumer<Function<String, String>, StrategyConfig.Builder> initStrategyConfig() {return (scanner, builder) -> {builder.addInclude(getTables(scanner.apply("请输入表名,多个英文逗号分隔?所有输入 all")))// 增加过滤表前缀//.addTablePrefix("t_")// service策略配置.serviceBuilder().formatServiceFileName("I%sService").formatServiceImplFileName("%sServiceImpl")// entity策略配置.entityBuilder()// 数据库表映射到实体的命名策略.naming(NamingStrategy.underline_to_camel)// 数据库表字段映射到实体的命名策略.columnNaming(NamingStrategy.no_change)// 开启lombok模型.enableLombok()// controller策略设置.controllerBuilder().formatFileName("%sController").enableRestStyle().enableHyphenStyle()// mapper策略设置.mapperBuilder()// 生成通用的resultMap.enableBaseResultMap().enableBaseColumnList().superClass(BaseMapper.class).formatMapperFileName("%sMapper").enableMapperAnnotation().formatXmlFileName("%sMapper");};}} ```

五、创建用户数据库

随意添加几条数据

六、生成user相关类

启动MybatisPlusGenerator的main函数输入user回车生成

回车之后会自动生成controller、entity、mapper、service、impl5个软件包和对应的类文件。

在entity下创建vo软件包,并添加UserVO类

package com.example.hamlet.entity.vo;import io.swagger.annotations.ApiModelProperty;import lombok.Data;import java.io.Serializable;@Datapublic class UserVO implements Serializable {private static final long serialVersionUID = 1L;@ApiModelProperty("主键ID")private Long id;@ApiModelProperty("姓名")private String name;@ApiModelProperty("年龄")private Integer age;@ApiModelProperty("邮箱")private String email;@ApiModelProperty("用户名")private String userAccount;@ApiModelProperty("密码")private String passWord;@ApiModelProperty("性别")private String sex;}

打开IUserService添加接口

/** * <p> * 服务类 * </p> * * @author Hamlet * @since /10/26 17:12 */ public interface IUserService extends IService<User> {List<UserVO> selectUserList();}

打开UserService实现selecctUserList方法

/*** <p>* 服务实现类* </p>** @author Hamlet* @since /10/26 17:12*/@Servicepublic class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService {@Autowiredprivate UserMapper userMapper;@Overridepublic List<UserVO> selectUserList() {List<UserVO> userVOList=new ArrayList<>();List<User> userList=userMapper.selectList(null);if (CollectionUtils.isEmpty(userList))return userVOList;elseuserList.forEach(user -> {UserVO userVO=new UserVO();BeanUtils.copyProperties(user,userVO);userVOList.add(userVO);});return userVOList;}}

打开User控制器

package com.example.hamlet.controller;import com.example.hamlet.entity.vo.UserVO;import com.example.hamlet.service.IUserService;import io.swagger.annotations.Api;import io.swagger.annotations.ApiOperation;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.*;import java.util.List;/*** <p>* 用户控制器* </p>** @author Hamlet* @since /10/26 17:12*/@RestController@RequestMapping("/user")public class UserController {@Autowiredprivate IUserService userService;/*** 获取用户列表* @return List<UserVO>*/@GetMapping("/list")@ApiOperation("获取用户列表")public List<UserVO> GetUserList(){return userService.selectUserList();}}

至此所有的方法都已写完,运行项目

输入链接:http://localhost:8099/user/list

点点关注不迷路,下一章添加Swagger2

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。