{"id":37028820,"url":"https://github.com/jfaster/mango-spring-boot-starter","last_synced_at":"2026-01-14T03:27:06.556Z","repository":{"id":57745140,"uuid":"112733301","full_name":"jfaster/mango-spring-boot-starter","owner":"jfaster","description":"mango for spring boot support","archived":false,"fork":false,"pushed_at":"2019-04-18T09:07:28.000Z","size":70,"stargazers_count":32,"open_issues_count":4,"forks_count":12,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-07-11T13:05:48.278Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jfaster.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-12-01T11:37:44.000Z","updated_at":"2024-11-14T15:22:57.000Z","dependencies_parsed_at":"2022-08-30T15:52:55.027Z","dependency_job_id":null,"html_url":"https://github.com/jfaster/mango-spring-boot-starter","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jfaster/mango-spring-boot-starter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jfaster%2Fmango-spring-boot-starter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jfaster%2Fmango-spring-boot-starter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jfaster%2Fmango-spring-boot-starter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jfaster%2Fmango-spring-boot-starter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jfaster","download_url":"https://codeload.github.com/jfaster/mango-spring-boot-starter/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jfaster%2Fmango-spring-boot-starter/sbom","scorecard":{"id":517296,"data":{"date":"2025-08-11","repo":{"name":"github.com/jfaster/mango-spring-boot-starter","commit":"0a0dc286e6a2c98d3c200a6ddbc82e0c483bc687"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":1.6,"checks":[{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":0,"reason":"Found 0/12 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Binary-Artifacts","score":9,"reason":"binaries present in source code","details":["Warn: binary detected: .mvn/wrapper/maven-wrapper.jar:1"],"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 1 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":0,"reason":"26 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-vmq6-5m68-f53m","Warn: Project is vulnerable to: GHSA-668q-qrv7-99fm","Warn: Project is vulnerable to: GHSA-6v67-2wr5-gvf4","Warn: Project is vulnerable to: GHSA-pr98-23f8-jwxv","Warn: Project is vulnerable to: GHSA-cm59-pr5q-cw85","Warn: Project is vulnerable to: GHSA-rc42-6c7j-7h5r","Warn: Project is vulnerable to: GHSA-xf96-w227-r7c4","Warn: Project is vulnerable to: GHSA-36p3-wjmg-h94x","Warn: Project is vulnerable to: GHSA-hh26-6xwr-ggv7","Warn: Project is vulnerable to: GHSA-4gc7-5j7h-4qph","Warn: Project is vulnerable to: GHSA-4wp7-92pw-q264","Warn: Project is vulnerable to: GHSA-g5mm-vmx4-3rg7","Warn: Project is vulnerable to: GHSA-f26x-pr96-vw86","Warn: Project is vulnerable to: GHSA-ffvq-7w96-97p7","Warn: Project is vulnerable to: GHSA-558x-2xjg-6232","Warn: Project is vulnerable to: GHSA-564r-hj7v-mcr5","Warn: Project is vulnerable to: GHSA-9cmq-m9j5-mvww","Warn: Project is vulnerable to: GHSA-wxqc-pxw9-g2p8","Warn: Project is vulnerable to: GHSA-3mc7-4q67-w48m","Warn: Project is vulnerable to: GHSA-98wm-3w3q-mw94","Warn: Project is vulnerable to: GHSA-9w3m-gqgf-c4p9","Warn: Project is vulnerable to: GHSA-c4r9-r8fh-9vj2","Warn: Project is vulnerable to: GHSA-hhhw-99gj-p3c3","Warn: Project is vulnerable to: GHSA-mjmj-j48q-9wg2","Warn: Project is vulnerable to: GHSA-rvwf-54qp-4r6v","Warn: Project is vulnerable to: GHSA-w37g-rhq8-7m4j"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-20T02:10:04.255Z","repository_id":57745140,"created_at":"2025-08-20T02:10:04.256Z","updated_at":"2025-08-20T02:10:04.256Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28408843,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T01:52:23.358Z","status":"online","status_checked_at":"2026-01-14T02:00:06.678Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-14T03:27:06.008Z","updated_at":"2026-01-14T03:27:06.550Z","avatar_url":"https://github.com/jfaster.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# mango-spring-boot-starter\n\n# 概要\nMango针对springboot提供的starter\n\n# 例子\n\u003e  * JDK 1.8 or above\n\u003e  * springboot 2.x\n\u003e  * 编译工具 [Maven][maven] or [Gradle][gradle]\n\n## 添加依赖\n   ```xml\n    \u003cdependency\u003e\n        \u003cgroupId\u003eorg.jfaster\u003c/groupId\u003e\n        \u003cartifactId\u003emango-spring-boot-starter\u003c/artifactId\u003e\n        \u003cversion\u003e2.0.1\u003c/version\u003e\n    \u003c/dependency\u003e\n   ```\n   \n## 配置yml或者properties文件\n\n    src/main/resources/application.yml\n\n    mango:\n      #dao所在的基包，多个包用逗号分割\n      scan-package: org.jfster.mango.dao\n      #mango引用数据源名配置，ds1和ds2..是数据源的key，可以自定义，如果没有slave，可以不配置。\n      #mango中的连接池使用hikaricp，所以hikaricp中的配置在此都可以配置。\n      datasources:\n        - name: ds1\n          master:\n            driver-class-name: com.mysql.jdbc.Driver\n            jdbc-url: jdbc:mysql://127.0.0.1:3306/test\n            user-name: root\n            password: 272777475\n            maximum-pool-size: 10\n            connection-timeout: 3000\n    \n          #slaves:\n          #  - driver-class-name: com.mysql.jdbc.Driver\n          #    jdbc-url: jdbc:mysql://127.0.0.1:3306/test\n          #    user-name: root\n          #    password: 272777475\n          #    maximum-pool-size: 10\n          #    connection-timeout: 3000\n    \n        #如果不想使用内置的连接池，在此指定其他数据源的bean\n          #  - ref: 其他数据源在spring中的id\n    \n        #- name: ds2\n        #  master:\n        #    driver-class-name: com.mysql.jdbc.Driver\n        #    jdbc-url: jdbc:mysql://127.0.0.1:3306/test\n        #    user-name: root\n        #    password: 272777475\n        #    maximum-pool-size: 10\n        #    connection-timeout: 3000\n      #获取mango实例工厂，默认是org.jfaster.mango.plugin.spring.DefaultMangoFactoryBean，从spring容器中获取mango实例\n      #默认就可以，如果有特殊需要可以指定自己的mango工厂类，继承org.jfaster.mango.plugin.spring.AbstractMangoFactoryBean实现createMango()方法\n      #factory-class: org.jfaster.mango.plugin.spring.DefaultMangoFactoryBean\n    \n      #是否兼容空list\n      #compatible-with-empty-list: true\n    \n      #是否检查列\n      #check-column: false\n    \n      #是否方法参数使用真名，jdk1.8以后才支持\n      #use-actual-param-name: false\n    \n      #批量更新是否都执行完提交事务\n      #use-transaction-for-batch-update: false\n    \n      #缓存处理器\n      #cache-handler: 实现org.jfaster.mango.operator.cache.CacheHandler的缓存处理器的类路径\n    \n      #是否懒加载\n      #lazy-init: false\n    \n      #mango拦截器，实现org.jfaster.mango.interceptor.Interceptor方法，可以配置多个\n      #interceptors:\n      #  - 拦截器1的类全限定型名称\n      #  - 拦截器2的类全限定型名称\n      #  - 拦截器2的类全限定型名称\n    \n\n      src/main/resources/application.properties\n\n      #dao所在的基包，多个包用逗号分割\n      mango.scan-package=org.jfster.mango.dao\n      \n      #mango引用数据源名配置，ds1和ds2..是数据源的key，可以自定义，如果没有slave，可以不配置。\n      #mango中的连接池使用hikaricp，所以hikaricp中的配置在此都可以配置。      \n      mango.datasources[0].name=ds1\n      mango.datasources[0].master.driver-class-name=com.mysql.jdbc.Driver\n      mango.datasources[0].master.jdbc-url=jdbc:mysql://127.0.0.1:3306/test\n      mango.datasources[0].master.user-name=root\n      mango.datasources[0].master.password=272777475\n      mango.datasources[0].master.maximum-pool-size=10\n      mango.datasources[0].master.connection-timeout=3000\n      \n      #mango.datasources[0].slaves[0].driver-class-name=com.mysql.jdbc.Driver\n      #mango.datasources[0].slaves[0].jdbc-url-class-name=jdbc:mysql://127.0.0.1:3306/test\n      #mango.datasources[0].slaves[0].user-name=root\n      #mango.datasources[0].slaves[0].password=272777475\n      #mango.datasources[0].slaves[0].maximum-pool-size=10\n      #mango.datasources[0].slaves[0].connection-timeout=3000\n      \n      #如果不想使用内置的连接池，在此指定其他数据源的bean。\n      #mango.datasource[0].slaves[1].ref=其他数据源在spring中的id\n      \n      #mango.datasources[1].name=ds2\n      #mango.datasources[1].master.driver-class-name=com.mysql.jdbc.Driver\n      #mango.datasources[1].master.jdbc-url-class-name=jdbc:mysql://127.0.0.1:3306/test\n      #mango.datasources[1].master.user-name=root\n      #mango.datasources[1].master.password=272777475\n      #mango.datasources[1].master.maximum-pool-size=10\n      #mango.datasources[1].master.connection-timeout=3000\n      \n      #获取mango实例工厂，默认是org.jfaster.mango.plugin.spring.DefaultMangoFactoryBean，从spring容器中获取mango实例\n      #默认就可以，如果有特殊需要可以指定自己的mango工厂类，继承org.jfaster.mango.plugin.spring.AbstractMangoFactoryBean实现createMango()方法\n      #mango.factory-class=org.jfaster.mango.plugin.spring.DefaultMangoFactoryBean\n      \n      #是否兼容空list\n      #mango.compatible-with-empty-list=true\n      \n      #是否检查列\n      #mango.check-column=false\n      \n      #是否方法参数使用真名，jdk1.8以后才支持\n      #mango.use-actual-param-name=false\n      \n      #批量更新是否都执行完提交事务\n      #mango.use-transaction-for-batch-update=false\n      \n      #缓存处理器\n      #mango.cache-handler=实现org.jfaster.mango.operator.cache.CacheHandler的缓存处理器的类路径\n      \n      #是否懒加载\n      #mango.lazy-init=false\n      \n      #mango拦截器，实现org.jfaster.mango.interceptor.Interceptor方法，可以配置多个\n      #mango.interceptors[0]=拦截器1的类全限定型名称\n      #mango.interceptors[1]=拦截器2的类全限定型名称\n      #mango.interceptors[2]=拦截器2的类全限定型名称\n\n注释部分不是必须配置项，可以根据自己需要自行配置。\n\n## 创建dao，并启动应用\n \n1.\n    \n    `src/main/java/org/jfaster/mango/pojo/User.java`\n\n    ```java\n    package org.jfster.mango.pojo;\n    \n    /**\n     * @author fangyanpeng.\n     */\n    public class User {\n    \n        private int id;\n    \n        private String name;\n    \n        private int age;\n    \n        public int getId() {\n            return id;\n        }\n    \n        public void setId(int id) {\n            this.id = id;\n        }\n    \n        public String getName() {\n            return name;\n        }\n    \n        public void setName(String name) {\n            this.name = name;\n        }\n    \n        public int getAge() {\n            return age;\n        }\n    \n        public void setAge(int age) {\n            this.age = age;\n        }\n    }\n\n    ```\n\n    `src/main/java/org/jfaster/mango/dao/UserDao.java`\n\n    ```java\n    package org.jfster.mango.dao;\n    \n    import org.jfaster.mango.annotation.DB;\n    import org.jfaster.mango.annotation.SQL;\n    import org.jfster.mango.pojo.User;\n    \n    import java.util.List;\n    \n    /**\n     * \n     * @author fangyanpeng.\n     */\n    @DB(table = \"distinct_test\", name = \"ds1\")\n    public interface UserDao {\n    \n        @SQL(\"select id,name,age from #table\")\n        List\u003cUser\u003e getAllUsers();\n    }\n\n    ```\n\n2. \n\n   `src/main/java/org/jfaster/mango/TestApplication.java`\n\n   ```java\n\n   package org.jfster.mango;\n   \n   import org.jfster.mango.dao.UserDao;\n   import org.jfster.mango.pojo.User;\n   import org.springframework.boot.SpringApplication;\n   import org.springframework.boot.autoconfigure.SpringBootApplication;\n   import org.springframework.context.ApplicationContext;\n   \n   import java.util.List;\n   \n   @SpringBootApplication\n   public class TestApplication {\n   \n   \tpublic static void main(String[] args) {\n   \t\tApplicationContext context = SpringApplication.run(TestApplication.class, args);\n   \t\tUserDao userDao = context.getBean(UserDao.class);\n   \t\tList\u003cUser\u003e users = userDao.getAllUsers();\n   \t\tfor (User user : users){\n   \t\t\tSystem.out.println(user.getId() + \"|\" + user.getName() + \"|\" + user.getAge());\n   \t\t}\n   \t}\n   }\n   ```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjfaster%2Fmango-spring-boot-starter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjfaster%2Fmango-spring-boot-starter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjfaster%2Fmango-spring-boot-starter/lists"}