# ds **Repository Path**: wip/ds ## Basic Information - **Project Name**: ds - **Description**: 这是一个基于spring boot的后端开发项目,实现了企业级的CRUD,可基于此项目进行二次开发和扩展. - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2022-03-04 - **Last Updated**: 2022-03-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 动态数据源 项目说明 >这是一个基于spring boot的后端开发项目,实现了企业级的CRUD,可基于此项目进行二次开发和扩展. 核心技术 - spring-boot-starter-web - spring-boot-starter-thymeleaf - druid-spring-boot-starter - mybatis-plus-boot-starter - dynamic-datasource-spring-boot-starter 数据库 - mysql : 可以多数据库 - oracle : 可以多数据库 ### 项目依赖 ` org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-thymeleaf com.alibaba druid-spring-boot-starter 1.2.8 com.baomidou mybatis-plus-boot-starter 3.5.1 com.baomidou dynamic-datasource-spring-boot-starter 3.5.1 com.oracle.database.jdbc ojdbc8 runtime mysql mysql-connector-java runtime org.projectlombok lombok true org.springframework.boot spring-boot-starter-test test ` ### yml配置文件说明 ` spring: autoconfigure: #为了某些版本的springboot @SpringBootApplication(exclude= {DataSourceAutoConfiguration.class}) 无法生效 exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure datasource: dynamic: primary: master #设置默认的数据源或者数据源组,默认值即为master,如果读者只是单数据源只需要注释掉slave相关配置即可,这里为了方便演示master与slave保持相同 datasource: master: url: jdbc:mysql://localhost:3306/mybatis?serverTimezone=Hongkong&allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false # serverTimezone=Hongkong 需要填上时区 username: root password: root driverClassName: com.mysql.cj.jdbc.Driver #type: com.alibaba.druid.pool.DruidDataSource slave: url: jdbc:mysql://localhost:3306/test?serverTimezone=Hongkong&allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false # serverTimezone=Hongkong 需要填上时区 username: root password: root driverClassName: com.mysql.cj.jdbc.Driver oracle: driverClassName: oracle.jdbc.OracleDriver url: jdbc:oracle:thin:@127.0.0.1:1521:xe?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 username: boot password: boot druid: #初始连接数 initialSize: 5 # 最小连接池数量 minIdle: 10 # 最大连接池数量 maxActive: 20 # 配置获取连接等待超时的时间 maxWait: 60000 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 timeBetweenEvictionRunsMillis: 60000 #timeBetweenLogStatsMillis: 60000 # 配置一个连接在池中最小生存的时间,单位是毫秒 minEvictableIdleTimeMillis: 300000 # 配置一个连接在池中最大生存的时间,单位是毫秒 maxEvictableIdleTimeMillis: 900000 validationQuery: SELECT 1 FROM DUAL testWhileIdle: true testOnBorrow: false testOnReturn: false # 打开PSCache,并且指定每个连接上PSCache的大小 poolPreparedStatements: true maxPoolPreparedStatementPerConnectionSize: 20 # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙,此处是filter修改的地方 filters: stat,wall #,log4j # 通过connectProperties属性来打开mergeSql功能;慢SQL记录:方式一 connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 # 合并多个DruidDataSource的监控数据 useGlobalDataSourceStat: true # 慢SQL记录:方式二 stat: enabled: true # 慢SQL记录 log-slow-sql: true slow-sql-millis: 5000 merge-sql: true wall: enabled: true config: multi-statement-allow: true #...log4j,log4j2,slf4j,commonsLog... #log4j: #enabled: false #监控配置 druid: #https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter #配置 DruidStatFilter web-stat-filter: enabled: true url-pattern: /* exclusions: .js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/* #配置StatViewServlet stat-view-servlet: enabled: true url-pattern: /druid/* # IP 白名单,没有配置或者为空,则允许所有访问 allow: 127.0.0.1 # IP 黑名单,若白名单也存在,则优先使用 deny: 192.168.31.253 # 禁用 HTML 中 Reset All 按钮 reset-enable: false # 登录用户名/密码 login-username: admin login-password: 123456 #aop-patterns: # Spring监控AOP切入点,如x.y.z.service.*,配置多个英文逗号分隔 #mybatis plus mybatis-plus: mapper-locations: classpath*:com/example/ds/mapper/xml/*Mapper.xml #classpath:mapper/**/*.xml #实体扫描,多个package用逗号或者分号分隔 typeAliasesPackage: com.example.ds.entity check-config-location: true configuration: #是否开启自动驼峰命名规则(camel case)映射 map-underscore-to-camel-case: true #全局地开启或关闭配置文件中的所有映射器已经配置的任何缓存 cache-enabled: false call-setters-on-nulls: true #配置JdbcTypeForNull, oracle数据库必须配置 jdbc-type-for-null: 'null' #MyBatis 自动映射时未知列或未知属性处理策略 NONE:不做任何处理 (默认值), WARNING:以日志的形式打印相关警告信息, FAILING:当作映射失败处理,并抛出异常和详细信息 auto-mapping-unknown-column-behavior: warning global-config: banner: false db-config: #主键类型 0:"数据库ID自增", 1:"未设置主键类型",2:"用户输入ID (该类型可以通过自己注册自动填充插件进行填充)", 3:"全局唯一ID (idWorker), 4:全局唯一ID (UUID), 5:字符串全局唯一ID (idWorker 的字符串表示)"; id-type: ASSIGN_UUID #字段验证策略 IGNORED:"忽略判断", NOT_NULL:"非NULL判断", NOT_EMPTY:"非空判断", DEFAULT 默认的,一般只用于注解里(1. 在全局里代表 NOT_NULL,2. 在注解里代表 跟随全局) field-strategy: NOT_EMPTY #数据库大写下划线转换 capital-mode: true #逻辑删除值 logic-delete-value: 0 #逻辑未删除值 logic-not-delete-value: 1 ` ### 包配置文件说明 - com.example.ds.base 项目架构继承包 - com.example.ds.config 配置文件 - com.example.ds.entity 映射实体扫描包 - com.example.ds.mapper mapper扫描包 - classpath*:com/example/ds/mapper/xml/*Mapper.xml mybatis扫描xml文件位置 - com.example.ds.service 业务包 - com.example.ds.controller 控制器包 - com.example.ds.utils 工具类包