52 Star 102 Fork 32

老雷 / spring-boot-starter-dao

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README.md 11.39 KB
一键复制 编辑 原始数据 按行查看 历史
老雷 提交于 2018-09-08 18:02 . 更新 README.md

spring-boot-starter-dao

该项目,集成spring-boot,mybatis,通用mapper,pagehelper,druid。致力于降低数据层的开发复杂度,让mybatis配置彻底告别xml,让基于mybatis的开发嵌入jpa的身影,极大降低mybatis的入门门槛,也极大的增加mybatis的可用性。让mybatis新手使用mybatis轻轻松松,让mybatis老手开发效率和编码质量更上一层楼。

本项目特点

1. 配置及其简单,非常容易上手;
2. 支持读写分离;
3. 支持多数据源;
4. 支持注解方式指定枚举与数据库存储值的对应;
5. 基于通用mapper快速实现单表的增删查改;
6. 基于pagehelper便捷易用的数据库物理分页实现;
7. 基于druid的服务器监控。
8. 可以根据数据库表以及表中字段注释,生成带完整注释的model,生成基于通用mapper的dao层

快速入门

快速入门点击这里

本项目将在 开源中国,和github进行同步更新,欢迎大家使用,欢迎大家提出意见建议。

交流QQ群: 64409116,有问题或者有建议欢迎加群反馈。

更新记录


2.0.2
发布时间:2018年9月8日
更新内容:
        1.解决数据库连接池创建线程过多的问题
        2.解决必须配置从库的问题
        3.优化部分代码

2.0.1
发布时间:2018年5月15日
更新内容:
        1.优化部分代码
        2.解决代码生成器中的问题

2.0.0
发布时间:2018年5月10日
更新内容:
        1.添加sharding-jdbc对分库分表进行支持
        2.已经其它一些调整
注意: 2.X.X版本和1.X.X配置文件不兼容

1.1.0
发布时间:2018年4月12日
更新内容:
        1.升级spring-boot至2.0.1

1.0.7
发布时间:2018年4月11日
更新内容:
        1.升级spring-boot至1.5.11,以及升级其它部分依赖
        2.解决直接使用GeneratorMain代码生成时,如果项目依赖了spring-boot-starter-web时抛出异常问题

1.0.6
发布时间:2018年1月24日
更新内容:
        1.修改部分默认参数
        2.增加spring.mybatis.nodes.[dbname].properties mybatis配置参数

1.0.5
发布时间:2017年12月11日
更新内容:
         1.升级druid依赖至1.1.6
         2.解决1.0.4引起的事务中的bug 

1.0.4
发布时间:2017年11月9日
更新内容:
         1.重写代码生成器的入口类,修改代码生成器配置依赖项目配置
         2.解决多数据源时的配置隔离问题
         3.解决代码生成器,依赖工具类问题

1.0.3
发布时间:2017年11月3日
更新内容:
	1.降低jdk依赖至1.7
        2.解决分页插件在多数据源时存在的问题

1.0.2
发布时间:2017年9月29日
更新内容:
	1.解决当从库数量为0时,或者从库出现异常下线时,试图切换到从库查询时,出现索引越界的问题

1.0.1
发布时间: 2017年9月27日
更新内容:
	1.增加mybatis-generator依赖,实现项目内快速生成dao层

1.0.0
发布时间: 2017年9月24日
更新内容:
	1. 支持读写分离;
	2. 支持多数据源;
	3. 基于druid的服务器监控。 
	4. 支持注解方式指定枚举与数据库存储值的对应;
	5. 基于通用mapper快速实现单表的增删查改;
	6. 基于pagehelper便捷易用的数据库物理分页实现;

示例程序

1.克隆示例程序

git clone https://gitee.com/lei0719/spring-boot-starter-dao-example.git

2.生成dao,model,mapper代码

导入示例到eclipse,修改generator.properties中参数,使jdbc参数指向你的数据库。修改表参数,把计划生成的表改为你的数据库中存在。 以Application方式启动项目,选择包含main方法的com.reger.mybatis.generator.GeneratorMain,运行。 稍等,如果没有出现异常,基本就生成好了你数据表的数据层。

3.运行示例项目

运行示例项目,你首先需要导入数据文件test.sql。 然后修改'application.yml'中db链接的配置参数,如果没有从库,可以先把从库的配置注释掉 在项目跟目录执行 mvn spring-boot:run

更多配置参数

1.druid监控配置

spring:
  druid:
    stat:
      enable: true                        # 启用druid监控控制台
      allow: ''                           # IP白名单 (没有配置或者为空,则允许所有访问)
      deny: ''                            # IP黑名单 (存在共同时,deny优先于allow)
      loginUsername: 'leige'              # 用户名
      loginPassword: 'leige'              # 密码
      exclusions: '*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*' # WebStatFilter忽略资源
      resetEnable: false                  #禁用HTML页面上的“Reset All”功能
      filter-url-patterns: '/*'

2.druid连接池默认配置

spring:
  druid:
    default:                              # druid连接池默认参数,具体主库或者从库的配置会继承该配置
      enable: true
      initial-size: 5                     # 链接池初始化大小
      max-active: 500                     # 链接池中最大的链接数
      min-idle: 5                         # 链接池中最少要保留的链接数
      max-wait: 3000                      # 链接池中最大等待的链接数
      filters: wall,stat                  # 启用过滤器
      username: reger                     # 数据库登陆名
      password: reger_123                 # 数据库登陆密码
      default-auto-commit: true           # 是否自动提交事务,如果设置为false,代码中不启用事务数据将没法持久化
      access-to-underlying-connection-allowed: 
      async-close-connection-enable: 
      break-after-acquire-failure: 
      clear-filters-enable: 
      connection-error-retry-attempts: 
      default-read-only: 
      default-transaction-isolation: 
      driver-class-name: 
      dup-close-log-enable: 
      fail-fast: 
      log-abandoned: 
      log-different-thread: 
      login-timeout: 
      max-create-task-count: 
      max-evictable-idle-time-millis: 
      max-open-prepared-statements: 
      max-pool-prepared-statement-per-connection-size: 
      min-evictable-idle-time-millis: 
      not-full-timeout-retry-count: 
      pool-prepared-statements: 
      query-timeout: 
      remove-abandoned: 
      remove-abandoned-timeout-millis: 
      test-on-borrow: 
      test-on-return: 
      test-while-idle: 
      time-between-connect-error-millis: 
      time-between-eviction-runs-millis: 
      time-between-log-stats-millis: 
      url: 
      validation-query: 
      validation-query-timeout: 
      connect-properties:

3.mybatis配置

spring:
  mybatis:
    configuration:                        # mybatis具体的配置参数,所有的mybatis实例都会使用该配置
      cache-enabled: true                 # 是否启用缓存
      local-cache-scope: session          # 缓存范围
      lazy-loading-enabled: true          # 是否启用懒加载
      default-executor-type: simple       # sql执行模式
      map-underscore-to-camel-case: true  # 开启驼峰转换
      aggressive-lazy-loading: 
      auto-mapping-behavior: 
      call-setters-on-nulls: 
      default-fetch-size: 
      default-statement-timeout: 
      log-prefix: 
      use-generated-keys: 
      log-impl: 
      multiple-result-sets-enabled: 
      return-instance-for-empty-row: 
      use-column-label: 
      safe-result-handler-enabled: 
      safe-row-bounds-enabled: 
      use-actual-param-name: 

4.mybatis数据源配置

spring:
  mybatis:
    nodes:
      user:                                                       # 该数据点的名字
        order: before                                             # mybatis生成主键的顺序,如果要在insert into 数据前获得主键,配置为 BEFORE,否则配置为 AFTER 默认值为 BEFORE
        style: normal                                             # mybatis通用mapper中列字段默认转化方式
        primary: false                                            # 是否是默认的数据对象, 最多只有一个为true,如果配置多个只有第一个生效
        base-package: com.reger.test.user.dao                     # mybatis mapper接口文件的配置位置,该值不可以为空,可以用正则匹配,多个用逗号分隔
        mapper-package: com.reger.test.user.mapper                # mybatis mapper 的xml配置文件的位置 ,该值最好不要为空,可以用正则匹配,多个用逗号分隔
        type-aliases-package: 'com.reger.test.user.model'         # model类所在的包,该值可以为空,可以用正则匹配,多个用逗号分隔
        properties:                                               # mybatis配置参数
        config-map:
        data-sources:                                             # 分库数据源配置(没有分库数据源配置,同时没有分片配置时,只有主从配置时将使用主从配置)
          user_0: 
            load-balance-algorithm-type: round-robin
            master:
              url: jdbc:mysql://127.0.0.1:3306/user?useSSL=false
            slaves:
              - url: jdbc:mysql://127.0.0.1:3308/user?useSSL=false
        props:
          sql.show: true

      base:
        order: before
        style: normal
        primary: true
        base-package: com.reger.test.base.dao
        mapper-package: com.reger.test.base.mapper
        type-aliases-package: 'com.reger.test.base.model'
#        properties:
#        config-map:
        data-sources:
          base_0: 
#            load-balance-algorithm-class-name: 
            load-balance-algorithm-type: random
            master:
              url: jdbc:mysql://127.0.0.1:3306/base_0?useSSL=false 
              
          base_1: 
            load-balance-algorithm-type: round-robin
            master:
              url: jdbc:mysql://127.0.0.1:3306/base_1?useSSL=false
            slaves:
              - url: jdbc:mysql://127.0.0.1:3308/base_1?useSSL=false
              
        props:
          sql.show: true
          
        sharding:
#          default-data-source-name: base_0
#          default-key-generator-class: 
#          binding-tables:
#            - 
          default-database-strategy:
            inline:
              sharding-column: id
              algorithm-expression: "base_${id % 23 % 2}"
              
          tables:
            base: 
              key-generator-column-name: id
              actual-data-nodes: "base_${0..1}.base"
#              key-generator-class: 
#              logic-index: 
#              logic-table: base
#              database-strategy:
#                inline:
#                  sharding-column: id
#                  algorithm-expression: "base_${id % 23 % 2}"
#              table-strategy:
#                inline:
#                  sharding-column: ctime
#                  algorithm-expression: base_${D.format(ctime)}
Java
1
https://gitee.com/reger/spring-boot-starter-dao.git
git@gitee.com:reger/spring-boot-starter-dao.git
reger
spring-boot-starter-dao
spring-boot-starter-dao
master

搜索帮助