网站后台自动退出,公司注册资金500万,wordpress插件放那个文件夹,那有网页设计培训机构哈喽#xff0c;大家好#xff0c;我是呼噜噜#xff0c;在上一篇文章SpringBoot3Jdk17来了 | 春见知识分享基础上#xff0c;笔者把jdk17直接换成了jdk21一步到位#xff0c;来踩踩坑
添加依赖
修改pom.xml文件#xff1a; dependencygroupIdcom.baom…哈喽大家好我是呼噜噜在上一篇文章SpringBoot3Jdk17来了 | 春见知识分享基础上笔者把jdk17直接换成了jdk21一步到位来踩踩坑
添加依赖
修改pom.xml文件 dependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-spring-boot3-starter/artifactIdversion3.5.5/version/dependency!-- 生成器--dependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-generator/artifactIdversion3.5.3/version/dependency!-- mysql驱动依赖--dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion8.0.33/version/dependency试了很多版本坑还是非常多的这几个还是比较兼容的
修改配置文件
修改application.yml文件如果没有那建议把application.properties改成application.yml格式更加清爽一目了然当然你也可以不换
spring:datasource:url: jdbc:mysql://192.xx9.xx3.xx:3306/test?zeroDateTimeBehaviorconvertToNulluseUnicodetruecharacterEncodingutf-8autoReconnecttrueuseSSLfalseallowPublicKeyRetrievaltrueusername: rootpassword: xxx
添加数据库的连接地址用户名密码
在JDBC连接url中有几个项属性我们分别来看下
zeroDateTimeBehaviorconvertToNull
如果没有添加zeroDateTimeBehavior在操作值为0的timestamp类型时不能正确的处理而是默认抛出一个异常 该属性有下列三个属性值
exception默认值即抛出SQL state [S1009]. Cannot convert value…的异常convertToNull将日期转换成NULL值round替换成最近的日期即0001-01-01
useUnicodetruecharacterEncodingutf-8
使用Unicode字符集并且设置字符编码为utf-8一旦设置后不管数据库是什么编码读出与写入都会自动切换编码
autoReconnecttrue
设置超时重连
支持分页
在src/main/java/com.zj.java21demo/config目录下新建一个类MybatisPlusConfig
Configuration
//MapperScan(scan.your.mapper.package)
public class MybatisPlusConfig {/*** 添加分页插件*/Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor new MybatisPlusInterceptor();interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));//如果配置多个插件,切记分页最后添加//interceptor.addInnerInterceptor(new PaginationInnerInterceptor()); 如果有多数据源可以不配具体类型 否则都建议配上具体的DbTypereturn interceptor;}
}其中com.zj.java21demo是包名根据自己的来DbType.MYSQL是数据源的类型
支持代码自动生成
添加依赖
!-- 模板引擎 --
dependencygroupIdorg.freemarker/groupIdartifactIdfreemarker/artifactIdversion2.3.30/version
/dependency
!-- lombok --
dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversionRELEASE/versionscopecompile/scope
/dependency新建自动生成的类CodeGenerator并将其与启动类Java21DemoApplication放在同一个目录下
package com.zj.java21demo;import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import io.micrometer.common.util.StringUtils;import java.util.Collections;
import java.util.Scanner;public class CodeGenerator {/*** p* 读取控制台内容* /p*/public static String scanner(String tip) {Scanner scanner new Scanner(System.in);StringBuilder help new StringBuilder();help.append(请输入 tip );System.out.println(help.toString());if (scanner.hasNext()) {String ipt scanner.next();if (StringUtils.isNotBlank(ipt)) {return ipt;}}throw new MybatisPlusException(请输入正确的 tip );}public static void main(String[] args) {FastAutoGenerator.create(jdbc:mysql://127.0.0.1:3306/test?characterEncodingUTF-8useUnicodetrueuseSSLfalse, root, abc123)// 全局配置.globalConfig(builder - {builder.author(xiaoniuhululu) // 设置作者.commentDate(yyyy-MM-dd hh:mm:ss) //注释日期.outputDir(System.getProperty(user.dir) /src/main/java) // 指定输出目录.disableOpenDir() //禁止打开输出目录默认打开;})// 包配置.packageConfig(builder - {builder.parent(com.zj.java21demo) // 设置父包名.pathInfo(Collections.singletonMap(OutputFile.xml, System.getProperty(user.dir) /src/main/resources/mappers)); // 设置mapperXml生成路径})// 策略配置.strategyConfig(builder - {builder//.addInclude(sys_menu) // 设置需要生成的表名.addInclude(scanner(表名多个英文逗号分割).split(,))
// .addTablePrefix(sys_) // 设置过滤表前缀// Entity 策略配置.entityBuilder().enableLombok() //开启 Lombok.enableFileOverride() // 覆盖已生成文件.naming(NamingStrategy.underline_to_camel) //数据库表映射到实体的命名策略下划线转驼峰命.columnNaming(NamingStrategy.underline_to_camel) //数据库表字段映射到实体的命名策略下划线转驼峰命// Mapper 策略配置.mapperBuilder().enableFileOverride() // 覆盖已生成文件// Service 策略配置.serviceBuilder().enableFileOverride() // 覆盖已生成文件.formatServiceFileName(%sService) //格式化 service 接口文件名称%s进行匹配表名如 UserService.formatServiceImplFileName(%sServiceImpl) //格式化 service 实现类文件名称%s进行匹配表名如 UserServiceImpl// Controller 策略配置.controllerBuilder().enableFileOverride() // 覆盖已生成文件;}).templateEngine(new FreemarkerTemplateEngine()) // 我们这里使用Freemarker引擎模板默认的是Velocity引擎模板.execute();}
}
注意要设置好包名
我们接着开始测试通过navicat建好表user
DROP TABLE IF EXISTS user;
CREATE TABLE user (id int NOT NULL AUTO_INCREMENT,name varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT 姓名,account varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT 账号,password varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT 密码,create_time datetime NULL DEFAULT NULL COMMENT 创建时间,modified_time datetime NULL DEFAULT NULL COMMENT 修改时间,is_active int NULL DEFAULT NULL COMMENT 有效标志,PRIMARY KEY (id) USING BTREE
) ENGINE InnoDB CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci ROW_FORMAT Dynamic;然后直接运行CodeGenerator输入表名user如果时多个表名用,隔开 还需要注意的时UserMapper类需要添加注解Mapper
Mapper //!!!
public interface UserMapper extends BaseMapperUser {}测试并验证crud
这个就不具体展开了可以通过postman调用接口来测试也可以单元测试来测试 感谢阅读原创不易如果有收获的话就点个免费的[赞]or[转发]你的支持会激励我输出更高质量的文章感谢
计算机内功、源码解析、科技故事、项目实战等更多硬核文章在公众号「小牛呼噜噜」感兴趣可以关注一下!