springboot mybatis-plus 配置 yml 、druid 配置 yml 、mybatis-plus 代码生成
生活随笔
收集整理的這篇文章主要介紹了
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);?
總結
以上是生活随笔為你收集整理的springboot mybatis-plus 配置 yml 、druid 配置 yml 、mybatis-plus 代码生成的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Cluster_analysis
- 下一篇: skywalking 源码解析——多线程