springboot mybatis-plus 配置 yml 、druid 配置 yml 、mybatis-plus 代码生成

大家好,我是烤鸭:

今天分享一下 springboot mybatis-plus 和 druid 的yml 配置文件。

 

pom

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- druid --><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.4</version></dependency><!-- druid --><!-- mysql --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><!-- mysql --><!-- mybatis-plus --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.1</version></dependency><!-- mybatis-plus --><!-- mybatis-plus-generator --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.4.1</version></dependency><dependency><groupId>org.apache.velocity</groupId><artifactId>velocity-engine-core</artifactId><version>2.1</version></dependency><!-- mybatis-plus-generator -->

 

配置

mybatis-plus 官方配置:

https://baomidou.com/config/#%E5%9F%BA%E6%9C%AC%E9%85%8D%E7%BD%AE

druid 官方配置:

https://druid.apache.org/docs/latest/configuration/index.html

application.yml:

server:port: 8003servlet:context-path: /
​
spring:application:name: mybatis-plus-druid-demo # 应用名称datasource:type: com.alibaba.druid.pool.DruidDataSourceurl: jdbc:mysql://127.0.0.1:3306/demo?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&failOverReadOnly=false&zeroDateTimeBehavior=convertToNull&useSSL=falseusername: rootpassword: rootdriverClassName: com.mysql.jdbc.Driverdruid:# 连接池的配置信息# 初始化时建立物理连接的个数initial-size: 3# 连接池最小连接数min-idle: 3# 连接池最大连接数max-active: 20# 获取连接时最大等待时间,单位毫秒max-wait: 60000# 申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。test-while-idle: true# 既作为检测的间隔时间又作为testWhileIdel执行的依据time-between-connect-error-millis: 60000# 销毁线程时检测当前连接的最后活动时间和当前时间差大于该值时,关闭当前连接min-evictable-idle-time-millis: 30000# 用来检测连接是否有效的sql 必须是一个查询语句# mysql中为 select 'x'# oracle中为 select 1 from dualvalidation-query: select 'x'# 申请连接时会执行validationQuery检测连接是否有效,开启会降低性能,默认为truetest-on-borrow: false# 归还连接时会执行validationQuery检测连接是否有效,开启会降低性能,默认为truetest-on-return: false# 是否缓存preparedStatement,mysql5.5+建议开启pool-prepared-statements: true# 当值大于0时poolPreparedStatements会自动修改为truemax-pool-prepared-statement-per-connection-size: 20# 合并多个DruidDataSource的监控数据use-global-data-source-stat: false# 配置扩展插件filters: stat,wall,slf4j# 通过connectProperties属性来打开mergeSql功能;慢SQL记录connect-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000# 定时输出统计信息到日志中,并每次输出日志会导致清零(reset)连接池相关的计数器。time-between-log-stats-millis: 300000# 配置DruidStatFilterweb-stat-filter:enabled: trueurl-pattern: '/*'exclusions: '*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*'# 配置DruidStatViewServletstat-view-servlet:# 是否启用StatViewServlet(监控页面)默认值为false(考虑到安全问题默认并未启动,如需启用建议设置密码或白名单以保障安全)enabled: trueurl-pattern: '/druid/*'# IP白名单(没有配置或者为空,则允许所有访问)allow: 127.0.0.1,192.168.0.1# IP黑名单 (存在共同时,deny优先于allow)deny: 192.168.0.128# 禁用HTML页面上的“Reset All”功能reset-enable: false# 登录名login-username: root# 登录密码login-password: root
​
mybatis-plus:#MyBatis Mapper 所对应的 XML 文件位置mapperLocations: #MyBatis 配置文件位置configLocation:#MyBaits 别名包扫描路径typeAliasesPackage:#该配置请和 typeAliasesPackage 一起使用,如果配置了该属性,则仅仅会扫描路径下以该类作为父类的域对象typeAliasesSuperType:#TypeHandler 扫描路径,如果配置了该属性,SqlSessionFactoryBean 会把该包下面的类注册为对应的 TypeHandlertypeHandlersPackage:#枚举类 扫描路径,如果配置了该属性,会将路径下的枚举类进行注入,让实体类字段能够简单快捷的使用枚举属性 typeEnumsPackage:#Spring Boot Only,启动时是否检查 MyBatis XML 文件的存在,默认不检查checkConfigLocation: false#Spring Boot Only,指定执行器#ExecutorType.SIMPLE:该执行器类型不做特殊的事情,为每个语句的执行创建一个新的预处理语句(PreparedStatement)#ExecutorType.REUSE:该执行器类型会复用预处理语句(PreparedStatement)#ExecutorType.BATCH:该执行器类型会批量执行所有的更新语句executorType:#指定外部化 MyBatis Properties 配置,通过该配置可以抽离配置,实现不同环境的配置部署configurationProperties:#原生 MyBatis 所支持的配置configuration:#默认false,是否开启自动驼峰命名规则(camel case)映射,即从经典数据库列名 A_COLUMN(下划线命名) 到经典 Java 属性名 aColumn(驼峰命名) 的类似映射mapUnderscoreToCamelCase: false#默认枚举处理类,如果配置了该属性,枚举将统一使用指定处理器进行处理#org.apache.ibatis.type.EnumTypeHandler : 存储枚举的名称#org.apache.ibatis.type.EnumOrdinalTypeHandler : 存储枚举的索引#com.baomidou.mybatisplus.extension.handlers.MybatisEnumTypeHandler : 枚举类需要实现IEnum接口或字段标记@EnumValue注解.(3.1.2以下版本为EnumTypeHandler)defaultEnumTypeHandler:#当设置为 true 的时候,懒加载的对象可能被任何懒属性全部加载,否则,每个属性都按需加载。需要和 lazyLoadingEnabled 一起使用。aggressiveLazyLoading: true#MyBatis 自动映射策略,通过该配置可指定 MyBatis 是否并且如何来自动映射数据表字段与对象的属性,总共有 3 种可选值:#AutoMappingBehavior.NONE:不启用自动映射#AutoMappingBehavior.PARTIAL:只对非嵌套的 resultMap 进行自动映射#AutoMappingBehavior.FULL:对所有的 resultMap 都进行自动映射autoMappingBehavior:#MyBatis 自动映射时未知列或未知属性处理策略,通过该配置可指定 MyBatis 在自动映射过程中遇到未知列或者未知属性时如何处理,总共有 3 种可选值:#AutoMappingUnknownColumnBehavior.NONE:不做任何处理 (默认值)#AutoMappingUnknownColumnBehavior.WARNING:以日志的形式打印相关警告信息#AutoMappingUnknownColumnBehavior.FAILING:当作映射失败处理,并抛出异常和详细信息autoMappingUnknownColumnBehavior:#Mybatis一级缓存,默认为 SESSION。(微服务架构中需要关闭一级缓存)#SESSION session级别缓存,同一个session相同查询语句不会再次查询数据库#STATEMENT 关闭一级缓存localCacheScope:#开启Mybatis二级缓存,默认为 truecacheEnabled: true#指定当结果集中值为 null 的时候是否调用映射对象的 Setter(Map 对象时为 put)方法,通常运用于有 Map.keySet() 依赖或 null 值初始化的情况。callSettersOnNulls: true#指定一个提供 Configuration 实例的工厂类。该工厂生产的实例将用来加载已经被反序列化对象的懒加载属性值,其必须包含一个签名方法static Configuration getConfiguration()。(从 3.2.3 版本开始)configurationFactory:global-config:#是否控制台 print mybatis-plus 的 LOGObanner: false#是否初始化 SqlRunner(com.baomidou.mybatisplus.extension.toolkit.SqlRunner)  enableSqlRunner: false#类型:Class#默认值:com.baomidou.mybatisplus.core.mapper.Mapper.class#通用Mapper父类(影响sqlInjector,只有这个的子类的 mapper 才会注入 sqlInjector 内的 method)superMapperClass:#metaObjectHandler: 3.0开始废除此属性,请使用@Bean的方式注入至Spring容器:#sqlInjector: 3.0开始废除此属性,请使用@Bean的方式注入至Spring容器#identifierGenerator: 废弃db-config:#全局默认主键类型#类型:com.baomidou.mybatisplus.annotation.IdType#默认值:ASSIGN_IDidType:#表名前缀  tablePrefix:#schemaschema:#字段 format,例: %s,(对主键无效)  columnFormat:#entity 的字段(property)的 format,只有在 column as property 这种情况下生效例: %s,(对主键无效)propertyFormat:#表名是否使用驼峰转下划线命名,只对表名生效  tableUnderline:#大写命名,对表名和字段名均生效capitalMode:#表主键生成器(starter 下支持@bean注入)keyGenerator:#全局的entity的逻辑删除字段属性名,(逻辑删除下有效)logicDeleteField:#逻辑已删除值,(逻辑删除下有效)logicDeleteValue:#逻辑未删除值,(逻辑删除下有效)logicNotDeleteValue:#类型:com.baomidou.mybatisplus.annotation.FieldStrategy#默认值:NOT_NULL#字段验证策略之 insert,在 insert 的时候的字段验证策略insertStrategy:#类型:com.baomidou.mybatisplus.annotation.FieldStrategy#默认值:NOT_NULL#字段验证策略之 update,在 update 的时候的字段验证策略updateStrategy:#类型:com.baomidou.mybatisplus.annotation.FieldStrategy#默认值:NOT_NULL#字段验证策略之 select,在 select 的时候的字段验证策略既 wrapper 根据内部 entity 生成的 where 条件selectStrategy:

druid控制台

访问 localhost:8003/druid,用户名密码是配置文件里的 root/root,能看到服务的信息,sql 监控等等

 

 

mybatis-plus 代码生成

copy到项目目录下,运行main方法即可

class GenCode {public static void main(String[] args) {String projectName = "mybatis-plus-druid-demo";// 1、全局配置GlobalConfig globalConfig = new GlobalConfig();//构建全局配置对象String projectPath = System.getProperty("user.dir");// 获取当前用户的目录globalConfig.setOutputDir(projectPath + "/"+projectName+"/src/main/java")// 输出文件路径.setAuthor("demo")// 设置作者名字.setOpen(false)// 是否打开资源管理器.setFileOverride(true)// 是否覆盖原来生成的.setIdType(IdType.AUTO)// 主键策略.setBaseResultMap(true)// 生成resultMap.setBaseColumnList(true)// XML中生成基础列.setServiceName("%sService");// 生成的service接口名字首字母是否为I,这样设置就没有I
​// 2、数据源配置DataSourceConfig dataSourceConfig = new DataSourceConfig();// 创建数据源配置dataSourceConfig.setUrl("jdbc:mysql://127.0.0.1:3306/demo?userSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC").setDriverName("com.mysql.cj.jdbc.Driver").setUsername("root").setPassword("root").setDbType(DbType.MYSQL);
​// 3、包配置PackageConfig packageConfig = new PackageConfig();packageConfig.setParent("com.yiche.demo.druid").setEntity("entity").setController("controller").setService("service").setMapper("mapper");
​// 4、策略配置StrategyConfig strategyConfig = new StrategyConfig();strategyConfig.setCapitalMode(true)// 开启全局大写命名.setInclude("demo")// 设置要映射的表.setNaming(NamingStrategy.underline_to_camel)// 下划线到驼峰的命名方式.setColumnNaming(NamingStrategy.underline_to_camel)// 下划线到驼峰的命名方式.setEntityLombokModel(false)// 是否使用lombok.setRestControllerStyle(true)// 是否开启rest风格.setControllerMappingHyphenStyle(true);// localhost:8080/hello_a_2
​
​// 5、自定义配置(配置输出xml文件到resources下)InjectionConfig cfg = new InjectionConfig() {@Overridepublic void initMap() {// to do nothing}};List<FileOutConfig> focList = new ArrayList<>();String templatePath = "/templates/mapper.xml.vm";// 自定义配置会被优先输出focList.add(new FileOutConfig(templatePath) {@Overridepublic String outputFile(TableInfo tableInfo) {// 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!return projectPath + "/"+projectName+"/src/main/resources/mapper/"+ tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;}});cfg.setFileOutConfigList(focList);
​// 6、整合配置AutoGenerator autoGenerator = new AutoGenerator();// 构建代码生自动成器对象autoGenerator.setGlobalConfig(globalConfig)// 将全局配置放到代码生成器对象中.setDataSource(dataSourceConfig)// 将数据源配置放到代码生成器对象中.setPackageInfo(packageConfig)// 将包配置放到代码生成器对象中.setStrategy(strategyConfig)// 将策略配置放到代码生成器对象中.setCfg(cfg)// 将自定义配置放到代码生成器对象中.execute();// 执行!}
}

myabtis-plus 简单的api

生成后的实体需要手动加 TableField 属性(不然会报属性映射的错)

public class Demo implements Serializable {
​private static final long serialVersionUID = 1L;
​@TableId(value = "id", type = IdType.AUTO)private Long id;
​/*** 名称*/private String name;
​private Integer age;
​@TableField(value = "uuid_no")private String uuidNo;@TableField(value = "create_time")private LocalDateTime createTime;@TableField(value = "update_time")private LocalDateTime updateTime;
​/*** 0 未删除 1 已删除*/@TableField(value = "delete_flag")private Integer deleteFlag;
​
​public Long getId() {return id;}
​public void setId(Long id) {this.id = id;}
​public String getName() {return name;}
​public void setName(String name) {this.name = name;}
​public Integer getAge() {return age;}
​public void setAge(Integer age) {this.age = age;}
​public String getUuidNo() {return uuidNo;}
​public void setUuidNo(String uuidNo) {this.uuidNo = uuidNo;}
​public LocalDateTime getCreateTime() {return createTime;}
​public void setCreateTime(LocalDateTime createTime) {this.createTime = createTime;}
​public LocalDateTime getUpdateTime() {return updateTime;}
​public void setUpdateTime(LocalDateTime updateTime) {this.updateTime = updateTime;}
​public Integer getDeleteFlag() {return deleteFlag;}
​public void setDeleteFlag(Integer deleteFlag) {this.deleteFlag = deleteFlag;}
​@Overridepublic String toString() {return "Demo{" +"id=" + id +", name=" + name +", age=" + age +", uuidNo=" + uuidNo +", createTime=" + createTime +", updateTime=" + updateTime +", deleteFlag=" + deleteFlag +"}";}
}

简单的api,直接用生成的demoService ,不需要手动写sql

插入:

Demo demo = new Demo();
boolean save = demoService.save(demo);

查询:

// 主键查询
Demo demo = demoService.getById(id);
// 属性查询
QueryWrapper<Demo> wrapper = new QueryWrapper();
// name是test_1的
wrapper.eq("name", name);
Demo demo = demoService.getOne(wrapper);

更新:

UpdateWrapper<Demo> wrapper = new UpdateWrapper();
// 构造更新条件,UPDATE demo        WHERE  name = ? 
wrapper.eq("name", name);
// 要更新的值
Demo demo = new Demo();
demo.setUuidNo(UUID.randomUUID().toString());
boolean update = demoService.update(demo, wrapper);

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/412588.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实验吧Web-易-天网管理系统(php弱类型,==号)

打开网页&#xff0c;查看源码&#xff0c;看到 <!-- $test$_GET[username]; $testmd5($test); if($test0) --> 说明用户名需要加密之后为0。 对于PHP的号&#xff0c;在使用 运算符对两个字符串进行松散比较时&#xff0c;PHP会把类数值的字符串转换为数值进行比较&…

个人的博客搭建(持续更新)

最近的CSDN的博客阅读体验非常的糟糕&#xff0c;恰好自己也一直想搭建一个属于自己的网站&#xff0c;放下自己的技术心得情感体会&#xff0c;从零开始慢慢搭建项目磨练技术&#xff0c;以后也把自己新习得的技术放在里面增加自己的学习乐趣。 一&#xff0c;搭建基本的项目模…

用Java实现图片验证码功能

一、什么是图片验证码&#xff1f; 可以参考下面这张图&#xff1a; 我们在一些网站注册的时候&#xff0c;经常需要填写以上图片的信息。 1、图片生成实体类&#xff1a; 1 package com.hexianwei.graphic;2 3 import java.awt.Color;4 import java.awt.Font;5 import java.aw…

nacos配置刷新失败导致的cpu上升和频繁重启,nacos配置中心源码解析

大家好&#xff0c;我是烤鸭&#xff1a; nacos 版本 1.3.2&#xff0c;先说下结论&#xff0c;频繁重启的原因确实没有找到&#xff0c;跟nacos有关&#xff0c;日志没有保留多少&#xff0c;只能从源码找下头绪(出问题的版本 server用的是 nacos 1.1&#xff0c;nacos-client…

nova— 计算服务

一、nova介绍&#xff1a; Nova 是 OpenStack 最核心的服务&#xff0c;负责维护和管理云环境的计算资源。OpenStack 作为 IaaS 的云操作系统&#xff0c;虚拟机生命周期管理也就是通过 Nova 来实现的。用途与功能 :1) 实例生命周期管理2) 管理计算资源3) 网络和认证管理4)REST…

springcloud gateway 自定义 accesslog elk

大家好&#xff0c;我是烤鸭&#xff1a; ​ 最近用 springcloud gateway 时&#xff0c;想使用类似 logback-access的功能&#xff0c;用来做数据统计和图表绘制等等&#xff0c;发现没有类似的功能&#xff0c;只能自己开发了。 环境&#xff1a; <dependency><gr…

jenkins发布docker项目 harbor

大家好&#xff0c;我是烤鸭&#xff1a; ​ jenkins 部署k8s 项目还是比较流畅的&#xff0c;本身建立多流水线项目&#xff0c;在项目中添加jenkinsfile就好了&#xff0c;镜像需要额外的参数&#xff0c;还可以添加dokcerfile文件。由于我现在的问题是不能够修改原有的项…

saltstack部署java应用失败无日志——CICD 部署

大家好&#xff0c;我是烤鸭&#xff1a; ​   最近在搞公司的CICD&#xff0c;遇到各种问题。复盘总结一下。 CICD 架构 这篇文章写得很详细&#xff0c;可以看一下 https://linux.cn/article-9926-1.html 而这里只是结合现在的情况分析下&#xff1a; CI 持续集成&…

[css] 浏览器是怎样判断元素是否和某个CSS选择器匹配?

[css] 浏览器是怎样判断元素是否和某个CSS选择器匹配&#xff1f; 有选择器&#xff1a; div.ready #wrapper > .bg-red 先把所有元素 class 中有 bg-red 的元素拿出来组成一个集合&#xff0c;然后上一层&#xff0c;对每一个集合中的元素&#xff0c;如果元素的 parent i…

idea 插件开发 扫描sqlserver

大家好&#xff0c;我是烤鸭&#xff1a; 最近在搞sqlserver 升级 mysql/tidb&#xff0c;发现代码里的sql有很多地方需要改&#xff0c;想着能不能开发一个省点力。 官方的迁移指南&#xff1a; https://www.mysql.com/why-mysql/white-papers/sql-server-to-mysql-zh/ 方案…

VUE之文字跑马灯效果

1.效果演示 2.相关代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><script src"js/vue-2.4.0.js"></script> </head> <body> <div id&…

PMP 错题记录

PMP 错题记录 大家好&#xff0c;我是烤鸭&#xff1a; 这次的PMP错题集本来想考前发&#xff0c;临时能看看&#xff0c;还是耽搁了&#xff0c;补发一下吧&#xff0c;不知道以后用不用的上&#xff0c;据说改版了&#xff0c;可能也用不上了。 变更题错题记录 9、一项…

nginx 配置 http/2(h2) 和 http 在同一端口的问题

nginx 配置 http/2(h2) 和 http 在同一端口的问题 大家好&#xff0c;我是烤鸭&#xff1a; ​ 这个完全是个采坑记录了。 场景说明 由于这边有个需求想加个支持 grpc 方式转发的域名。 正常的二级域名都是映射到80端口&#xff0c;所以也没想太多&#xff0c;按照这个…

FutureTask isDone 返回 false

大家好&#xff0c;我是烤鸭&#xff1a; ​ 今天看一下 FutureTask源码。好吧&#xff0c;其实遇到问题了&#xff0c;哪里不会点哪里。 伪代码 package src.executor;import org.springframework.scheduling.annotation.AsyncResult; import org.springframework.sche…

为什么MySQL数据库要用B+树存储索引

A&#xff1a;为什么MySQL数据库要用B树存储索引&#xff1f; Hash的查找速度为O(1)&#xff0c;而树的查找速度为O(log2n)&#xff0c;为什么不用Hash作为数据库的存储索引呢&#xff1f; 树的话&#xff0c;无非就是前中后序遍历、二叉树、二叉搜索树、平衡二叉树&#xff0c…

lettuce 配置域名 dns 切换

大家好&#xff0c;我是烤鸭&#xff1a; 如果你也有类似的困扰&#xff0c;运维告诉你&#xff0c;redis连接配置域名&#xff0c;这样出问题了&#xff0c;直接改dns地址就行&#xff0c;不需要重启服务。。。梦想是美好的&#xff0c;现实是残酷的。如果你使用的是 let…

zuul 1.x 和gateway性能对比

大家好&#xff0c;我是烤鸭&#xff1a; 今天分享下 zuul和gateway 网关压测。 环境&#xff1a; windows 10 jdk 8 压测工具&#xff1a; wrk jmeter 数据对比 场景是仅单独转发&#xff0c;接口 Thread.sleep(50) jmeter 12 线程&#xff0c;30s zuul&#xf…

redisson 大量ping操作,导致 tps过高

大家好&#xff0c;我是烤鸭&#xff1a; 这个问题有点奇怪&#xff0c;新服务上线&#xff0c;redis tps居高不下&#xff0c;还都是ping命令。 环境&#xff1a; 服务 &#xff1a; 280台&#xff0c;redis集群&#xff1a;12主24从 问题 由于服务刚上线&#xff0c;还没…

PMP 学习总结

大家好&#xff0c;我是烤鸭&#xff1a; PMP终于考过了。成绩出了一个月了&#xff0c;一直想写一篇总结但没下笔&#xff0c;主要原因最近有点忙(太懒了)。考试的内容是基于第6版的。 晒个证书 证书上没写等级&#xff0c;一般都宣称5A过(其实我是 4A1T过的)。 学习过程…

处理器映射器(HandlerMapping)及处理器适配器(HandlerAdapter)详解(一)

非注解 处理器映射器 和 处理器适配器 处理器映射器&#xff1a; 第一种: BeanNameUrlHandlerMapping <!-- 配置Handler --> <bean id"userController1" name"/queryUsers.action" class"com.bjxb.ssm.controller.UserController" />…